SlideShare una empresa de Scribd logo
1 de 11
INTEGRANTES:
Sofía Morales Cascante
Verónica Alfaro Morera
Kimberly Diaz Solano
Santiago Castro Artavia.
EXPLICACIÓN DEL CÓDIGO PARA GENERAR UN
ÁRBOL ALEATORIAMENTE.
El siguiente código fue desarrollado en Mathematica 9.0.
Primero buscaremos crear un árbol aleatoriamente , con n cantidad de
nodos y n – 1 aristas.
ArbolSA[n_]:=Module[{},G=RandomGraph[{n,n-
1},VertexLabels ->"Name",
ImagePadding -> 10];While[ConnectedGraphQ[G]ŠFalse,
G=RandomGraph[{n,n-1},VertexLabels ->
"Name",ImagePadding -> 10]];Return[G]];
Podemos solicitarle al usuario que digite la cantidad de nodos que desea y
el dato que desea buscar, y por medio del método anterior (ArbolSA)
guardamos en el árbol en una variable T.
a=Input["digite la cantidad de nodos que desea
tener el arbol"]
dato=Input["Digite el dato que desea buscar que
este entre 1 y ",a]
T=ArbolSA [a]
Creamos una lista para guardar el recorrido a lo largo por vértices, se crea
un contador para recorrer esa lista por medio de un for y retornar la
posición donde se encuentra el dato.
La variable cont se utilizara para recorrer a lo largo mientras que aux para
recorrer a lo ancho.
L={};
cont=0;
aux=0
Ahora lo que haremos es mediante el comando DepthFirstScan
recorreremos el árbol a lo largo por cada uno de sus nodos, y vamos
guardando mediante el comando L=Append[L,#])&)} los vértices en su
respectivo orden.
Imprimos la lista L, la cantidad de nodos el dato que se quiere buscar.
Ahora volvemos a recorrer el árbol con el comando DepthFirstScan y
mediante un If preguntamos que si el dato es igual al nodo imprimimos
que lo encontró.
Después con un for recorremos la lista L y si encuentra el dato
imprimimos que se encontró y la posición i donde se encuentra el dato.
Y al contador lo igualamos a 1 y hacemos un break para que no
continúe con la lista si es encontrado.
Por último tenemos un If que pregunta si contador es igual a cero, por
que si es así significa que el dato nunca se encontró, por lo cual
imprimimos que el dato no fue encontrado.
Print["ARBOL RECORRIDO BUSCAR PRIMERO A LO LARGO POR
VERTICES"]
DepthFirstScan[T,1,{"PrevisitVertex" -> ((L=Append[L,#])&)}];
Print[L]
Print["Cantidad de vertices que tiene el arbol ",a]
Print["Dato a buscar en el arbol generado ", dato]
DepthFirstScan[T,1,{"PrevisitVertex" -> ((L=Append[L,If[dato =
=#,Print["encontro el dato numero ",#]]])&)}];
For[i=1, i <= Length[L],If[dato ==L[[i]],Print["encontro el dato en la posicion
",i];
cont=1;Break[]];i++]
If[cont= = 0,Print["no se encontro el dato"]]
Para hacer la busqueda a lo ancho es muy similar a la anterior solo que en
vez del comando DepthFirstScan usaremos BreadthFirstScan
recorreremos el árbol a lo ancho por cada uno de sus nodos, y vamos
guardando mediante el comando B=Append[L,#])&)} los vértices en su
respectivo orden.
Imprimos la lista B, la cantidad de nodos el dato que se quiere buscar.
Ahora volvemos a recorrer el árbol con el comando BreadthFirstScan y
mediante un If preguntamos que si el dato es igual al nodo imprimimos
que lo encontró.
Después con un for recorremos la lista B y si encuentra el dato imprimimos
que se encontró y la posición i donde se encuentra el dato. Y al
contador lo igualamos a 1 y hacemos un break para que no continúe
con la lista si es encontrado.
Por último tenemos un If que pregunta si contador es igual a cero, por
que si es así significa que el dato nunca se encontró, por lo cual
imprimimos que el dato no fue encontrado.
Print["ARBOL RECORRIDO BUSCAR PRIMERO A LO LARGO POR
VERTICES"]
B={};
BreadthFirstScan[T,1,{"PrevisitVertex" -> ((B=Append[B,#])&)}];
Print[B]
Print["Cantidad de vertices que tiene el arbol ",a]
Print["Dato a buscar en el arbol generado ", dato]
BreadthFirstScan[T,1,{"PrevisitVertex" ->
((B=Append[B,If[dato==#,Print["encontro el dato numero ",#]]])&)}];
For[i=1,i <= Length[B],If[dato= =B[[i]],Print["encontro el dato en la posicion
",i];aux=1;Break[]];i++]
If[aux= =0,Print["no se encontro el dato"]]
EJEMPLO:
Este seria uno de los arboles.
Y aquí los recorridos que nos imprime.

Más contenido relacionado

La actualidad más candente

tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)edi.euitio
 
Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)edi.euitio
 
Tablas hash (Adrián García Amores)
Tablas hash (Adrián García Amores)Tablas hash (Adrián García Amores)
Tablas hash (Adrián García Amores)edi.euitio
 
Tablas Hash (Ana Argüelles Fonseca)
Tablas Hash (Ana Argüelles Fonseca)Tablas Hash (Ana Argüelles Fonseca)
Tablas Hash (Ana Argüelles Fonseca)edi.euitio
 
Tablas hash(Margarita Arias Pérez)
Tablas hash(Margarita Arias Pérez)Tablas hash(Margarita Arias Pérez)
Tablas hash(Margarita Arias Pérez)edi.euitio
 
Tablas hash (Sergio Fernández Rodríguez)
Tablas hash (Sergio Fernández Rodríguez)Tablas hash (Sergio Fernández Rodríguez)
Tablas hash (Sergio Fernández Rodríguez)edi.euitio
 
Tablas Hash (Eva Martín Álvarez)
Tablas Hash (Eva Martín Álvarez)Tablas Hash (Eva Martín Álvarez)
Tablas Hash (Eva Martín Álvarez)edi.euitio
 
Ezequiel Barbón Fernández
Ezequiel Barbón FernándezEzequiel Barbón Fernández
Ezequiel Barbón Fernándezedi.euitio
 
Tabla Hash ( Andrea Bedia Suarez )
Tabla Hash ( Andrea Bedia Suarez )Tabla Hash ( Andrea Bedia Suarez )
Tabla Hash ( Andrea Bedia Suarez )edi.euitio
 
Expo busqueda binaria
Expo busqueda binariaExpo busqueda binaria
Expo busqueda binariapool-deimer
 
Tabla Hash (Sergio González Amor)
Tabla Hash (Sergio González Amor)Tabla Hash (Sergio González Amor)
Tabla Hash (Sergio González Amor)edi.euitio
 
Funciones de Google drive descripción y categorias
Funciones de Google drive descripción y categoriasFunciones de Google drive descripción y categorias
Funciones de Google drive descripción y categoriasAndrea Belén Díaz Correa
 
R vs python ¿Cuál debes aprender?
R vs python ¿Cuál debes aprender?R vs python ¿Cuál debes aprender?
R vs python ¿Cuál debes aprender?Carlos Estevez
 
Tablas Hash (Javier Piris Alonso)
Tablas Hash (Javier Piris Alonso)Tablas Hash (Javier Piris Alonso)
Tablas Hash (Javier Piris Alonso)edi.euitio
 
Tablas hash(Covadonga Quirós)
Tablas hash(Covadonga Quirós)Tablas hash(Covadonga Quirós)
Tablas hash(Covadonga Quirós)edi.euitio
 

La actualidad más candente (17)

tablahash(marialuisa)
tablahash(marialuisa)tablahash(marialuisa)
tablahash(marialuisa)
 
Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)
 
Tablas hash (Adrián García Amores)
Tablas hash (Adrián García Amores)Tablas hash (Adrián García Amores)
Tablas hash (Adrián García Amores)
 
Tablas Hash (Ana Argüelles Fonseca)
Tablas Hash (Ana Argüelles Fonseca)Tablas Hash (Ana Argüelles Fonseca)
Tablas Hash (Ana Argüelles Fonseca)
 
Tablas hash(Margarita Arias Pérez)
Tablas hash(Margarita Arias Pérez)Tablas hash(Margarita Arias Pérez)
Tablas hash(Margarita Arias Pérez)
 
Tablas hash (Sergio Fernández Rodríguez)
Tablas hash (Sergio Fernández Rodríguez)Tablas hash (Sergio Fernández Rodríguez)
Tablas hash (Sergio Fernández Rodríguez)
 
Tablas Hash (Eva Martín Álvarez)
Tablas Hash (Eva Martín Álvarez)Tablas Hash (Eva Martín Álvarez)
Tablas Hash (Eva Martín Álvarez)
 
Informe tecnico unidad 6
Informe tecnico unidad 6Informe tecnico unidad 6
Informe tecnico unidad 6
 
Busqueda de datos
Busqueda de datosBusqueda de datos
Busqueda de datos
 
Ezequiel Barbón Fernández
Ezequiel Barbón FernándezEzequiel Barbón Fernández
Ezequiel Barbón Fernández
 
Tabla Hash ( Andrea Bedia Suarez )
Tabla Hash ( Andrea Bedia Suarez )Tabla Hash ( Andrea Bedia Suarez )
Tabla Hash ( Andrea Bedia Suarez )
 
Expo busqueda binaria
Expo busqueda binariaExpo busqueda binaria
Expo busqueda binaria
 
Tabla Hash (Sergio González Amor)
Tabla Hash (Sergio González Amor)Tabla Hash (Sergio González Amor)
Tabla Hash (Sergio González Amor)
 
Funciones de Google drive descripción y categorias
Funciones de Google drive descripción y categoriasFunciones de Google drive descripción y categorias
Funciones de Google drive descripción y categorias
 
R vs python ¿Cuál debes aprender?
R vs python ¿Cuál debes aprender?R vs python ¿Cuál debes aprender?
R vs python ¿Cuál debes aprender?
 
Tablas Hash (Javier Piris Alonso)
Tablas Hash (Javier Piris Alonso)Tablas Hash (Javier Piris Alonso)
Tablas Hash (Javier Piris Alonso)
 
Tablas hash(Covadonga Quirós)
Tablas hash(Covadonga Quirós)Tablas hash(Covadonga Quirós)
Tablas hash(Covadonga Quirós)
 

Destacado

Arboles teoria 1
Arboles teoria 1Arboles teoria 1
Arboles teoria 1RBonvicino
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y GrafosNoel E Jimenez
 
Matematica discretas presentación inicial
Matematica discretas  presentación inicialMatematica discretas  presentación inicial
Matematica discretas presentación inicialJairo Galeas
 
Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1Joshua Castro
 
17 Introduccion Arboles
17 Introduccion Arboles17 Introduccion Arboles
17 Introduccion ArbolesUVM
 
Matemática Discreta y Lógica/Fanjul Roberto
Matemática Discreta y Lógica/Fanjul RobertoMatemática Discreta y Lógica/Fanjul Roberto
Matemática Discreta y Lógica/Fanjul RobertoBiblioteca Central FACET
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datosnukeeHE
 
Teoría de decisión
Teoría de decisiónTeoría de decisión
Teoría de decisiónGabriel Pujol
 
Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02matediscretas
 
Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011gmromano
 
Matematica Discreta
Matematica DiscretaMatematica Discreta
Matematica Discretafrodosini
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretasguest553c2e
 

Destacado (20)

Arboles teoria 1
Arboles teoria 1Arboles teoria 1
Arboles teoria 1
 
Proyecto matediscreta
Proyecto matediscretaProyecto matediscreta
Proyecto matediscreta
 
Árboles Binarios y Grafos
Árboles Binarios  y GrafosÁrboles Binarios  y Grafos
Árboles Binarios y Grafos
 
Matematica discretas presentación inicial
Matematica discretas  presentación inicialMatematica discretas  presentación inicial
Matematica discretas presentación inicial
 
Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1Actividad#7,Arboles subgrupo #1
Actividad#7,Arboles subgrupo #1
 
Arboles
ArbolesArboles
Arboles
 
Arboles binarios
Arboles binariosArboles binarios
Arboles binarios
 
ARBOLES
ARBOLESARBOLES
ARBOLES
 
17 Introduccion Arboles
17 Introduccion Arboles17 Introduccion Arboles
17 Introduccion Arboles
 
Arboles
ArbolesArboles
Arboles
 
Matemática Discreta y Lógica/Fanjul Roberto
Matemática Discreta y Lógica/Fanjul RobertoMatemática Discreta y Lógica/Fanjul Roberto
Matemática Discreta y Lógica/Fanjul Roberto
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Teoría de decisión
Teoría de decisiónTeoría de decisión
Teoría de decisión
 
Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02Presentacion Proyecto Grupo Nro 02
Presentacion Proyecto Grupo Nro 02
 
Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011Matematica discreta2011 unidad3_2ºparte_2011
Matematica discreta2011 unidad3_2ºparte_2011
 
Matematica Discreta
Matematica DiscretaMatematica Discreta
Matematica Discreta
 
Apuntes De Matematicas Discretas
Apuntes De Matematicas DiscretasApuntes De Matematicas Discretas
Apuntes De Matematicas Discretas
 
Relaciones binarias aux
Relaciones binarias auxRelaciones binarias aux
Relaciones binarias aux
 
Arboles de expresion
Arboles de expresionArboles de expresion
Arboles de expresion
 
Arboles
ArbolesArboles
Arboles
 

Similar a Teoría de árboles

Similar a Teoría de árboles (20)

Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacion
 
Metodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a ObjetosMetodologia para resolver problemas con Programacion orientada a Objetos
Metodologia para resolver problemas con Programacion orientada a Objetos
 
Arbol
ArbolArbol
Arbol
 
Arbol
ArbolArbol
Arbol
 
26 Php. Array Escalar Y Asociativo
26 Php. Array Escalar Y Asociativo26 Php. Array Escalar Y Asociativo
26 Php. Array Escalar Y Asociativo
 
Python04
Python04Python04
Python04
 
Guía nº 8 arreglos
Guía nº 8 arreglosGuía nº 8 arreglos
Guía nº 8 arreglos
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
5-EDA-teo.ppt
5-EDA-teo.ppt5-EDA-teo.ppt
5-EDA-teo.ppt
 
Estructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - InformáticaEstructura de Datos y tipos de Datos - Informática
Estructura de Datos y tipos de Datos - Informática
 
fundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.pptfundamentos de algoritmos básico intermedio.ppt
fundamentos de algoritmos básico intermedio.ppt
 
estructura de datos y algoritmos repaso
estructura de  datos y algoritmos repasoestructura de  datos y algoritmos repaso
estructura de datos y algoritmos repaso
 
Listas
ListasListas
Listas
 
jaisan
jaisanjaisan
jaisan
 
concepto de estructuras de datos
concepto de estructuras de datosconcepto de estructuras de datos
concepto de estructuras de datos
 
Ejercicios con Python parte 05
Ejercicios con Python parte 05Ejercicios con Python parte 05
Ejercicios con Python parte 05
 
Apuntes Ped
Apuntes PedApuntes Ped
Apuntes Ped
 
Numeros
Numeros Numeros
Numeros
 
BuscarV en libre office
BuscarV en libre officeBuscarV en libre office
BuscarV en libre office
 

Teoría de árboles

  • 1.
  • 2. INTEGRANTES: Sofía Morales Cascante Verónica Alfaro Morera Kimberly Diaz Solano Santiago Castro Artavia.
  • 3. EXPLICACIÓN DEL CÓDIGO PARA GENERAR UN ÁRBOL ALEATORIAMENTE. El siguiente código fue desarrollado en Mathematica 9.0. Primero buscaremos crear un árbol aleatoriamente , con n cantidad de nodos y n – 1 aristas. ArbolSA[n_]:=Module[{},G=RandomGraph[{n,n- 1},VertexLabels ->"Name", ImagePadding -> 10];While[ConnectedGraphQ[G]ŠFalse, G=RandomGraph[{n,n-1},VertexLabels -> "Name",ImagePadding -> 10]];Return[G]];
  • 4. Podemos solicitarle al usuario que digite la cantidad de nodos que desea y el dato que desea buscar, y por medio del método anterior (ArbolSA) guardamos en el árbol en una variable T. a=Input["digite la cantidad de nodos que desea tener el arbol"] dato=Input["Digite el dato que desea buscar que este entre 1 y ",a] T=ArbolSA [a]
  • 5. Creamos una lista para guardar el recorrido a lo largo por vértices, se crea un contador para recorrer esa lista por medio de un for y retornar la posición donde se encuentra el dato. La variable cont se utilizara para recorrer a lo largo mientras que aux para recorrer a lo ancho. L={}; cont=0; aux=0
  • 6. Ahora lo que haremos es mediante el comando DepthFirstScan recorreremos el árbol a lo largo por cada uno de sus nodos, y vamos guardando mediante el comando L=Append[L,#])&)} los vértices en su respectivo orden. Imprimos la lista L, la cantidad de nodos el dato que se quiere buscar. Ahora volvemos a recorrer el árbol con el comando DepthFirstScan y mediante un If preguntamos que si el dato es igual al nodo imprimimos que lo encontró. Después con un for recorremos la lista L y si encuentra el dato imprimimos que se encontró y la posición i donde se encuentra el dato. Y al contador lo igualamos a 1 y hacemos un break para que no continúe con la lista si es encontrado. Por último tenemos un If que pregunta si contador es igual a cero, por que si es así significa que el dato nunca se encontró, por lo cual imprimimos que el dato no fue encontrado.
  • 7. Print["ARBOL RECORRIDO BUSCAR PRIMERO A LO LARGO POR VERTICES"] DepthFirstScan[T,1,{"PrevisitVertex" -> ((L=Append[L,#])&)}]; Print[L] Print["Cantidad de vertices que tiene el arbol ",a] Print["Dato a buscar en el arbol generado ", dato] DepthFirstScan[T,1,{"PrevisitVertex" -> ((L=Append[L,If[dato = =#,Print["encontro el dato numero ",#]]])&)}]; For[i=1, i <= Length[L],If[dato ==L[[i]],Print["encontro el dato en la posicion ",i]; cont=1;Break[]];i++] If[cont= = 0,Print["no se encontro el dato"]]
  • 8. Para hacer la busqueda a lo ancho es muy similar a la anterior solo que en vez del comando DepthFirstScan usaremos BreadthFirstScan recorreremos el árbol a lo ancho por cada uno de sus nodos, y vamos guardando mediante el comando B=Append[L,#])&)} los vértices en su respectivo orden. Imprimos la lista B, la cantidad de nodos el dato que se quiere buscar. Ahora volvemos a recorrer el árbol con el comando BreadthFirstScan y mediante un If preguntamos que si el dato es igual al nodo imprimimos que lo encontró. Después con un for recorremos la lista B y si encuentra el dato imprimimos que se encontró y la posición i donde se encuentra el dato. Y al contador lo igualamos a 1 y hacemos un break para que no continúe con la lista si es encontrado. Por último tenemos un If que pregunta si contador es igual a cero, por que si es así significa que el dato nunca se encontró, por lo cual imprimimos que el dato no fue encontrado.
  • 9. Print["ARBOL RECORRIDO BUSCAR PRIMERO A LO LARGO POR VERTICES"] B={}; BreadthFirstScan[T,1,{"PrevisitVertex" -> ((B=Append[B,#])&)}]; Print[B] Print["Cantidad de vertices que tiene el arbol ",a] Print["Dato a buscar en el arbol generado ", dato] BreadthFirstScan[T,1,{"PrevisitVertex" -> ((B=Append[B,If[dato==#,Print["encontro el dato numero ",#]]])&)}]; For[i=1,i <= Length[B],If[dato= =B[[i]],Print["encontro el dato en la posicion ",i];aux=1;Break[]];i++] If[aux= =0,Print["no se encontro el dato"]]
  • 10. EJEMPLO: Este seria uno de los arboles.
  • 11. Y aquí los recorridos que nos imprime.