Árbol Binario En ciencias de la computación, un árbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre "binario"). Si algún hijo tiene como referencia a null, es decir que no almacena ningún dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los árboles binarios son los árboles binarios de búsqueda, los montículos binarios y Codificación de Huffman.
Tipos de árboles binarios Un árbol binario es un árbol con raíz en el que cada nodo tiene como máximo dos hijos.
Un árbol binario lleno es un árbol en el que cada nodo tiene cero o dos hijos.
Un árbol binario perfecto es un árbol binario lleno en el que todas las hojas (vértices con cero hijos) están a la misma profundidad (distancia desde la raíz, también llamada altura).
A veces un árbol binario perfecto es denominado árbol binario completo. Otros definen un árbol binario completo como un árbol binario lleno en el que todas las hojas están a profundidad n o n-1, para alguna n.
Programa de Árbol binario JavaSe implementara un programa que solicite una cantidad de datos a ingresar y posteriormente los ordenra como un árbol binario.
Solicitara la cantidad de datos a ingresar
solicitar ingresar datos numéricos hasta completar la cantidad indicada en el punto uno
desplegara los datos ordenados en orden
Indicara cuanto son la cantidad de nodos
Indicara cuantos nodos son del tipo hoja
Desplegara los datos indicando su nivel
Desplegara la altura del árbol
Desplegara el mayor valor del árbol
eliminara el menor valor
Actividades implementadas
Salida del programa
run: Ingrese el numero de Datos a capturar: 7 Ingrese Dato Solo Numerico 1: 11 Ingrese Dato Solo Numerico 2: 33 Ingrese Dato Solo Numerico 3: 55 Ingrese Dato Solo Numerico 4: 6 Ingrese Dato Solo Numerico 5: 8 Ingrese Dato Solo Numerico 6: 00 Ingrese Dato Solo Numerico 7: 1 Impresion entreorden: 0 1 6 8 11 33 55 Cantidad de nodos del árbol:7 Cantidad de nodos hoja:3 Impresion en entre orden junto al nivel del nodo. 0 (3) - 1 (4) - 6 (2) - 8 (3) - 11 (1) - 33 (2) - 55 (3) - Artura del arbol:4 Mayor valor del árbol:55 Luego de borrar el menor: 1 6 8 11 33 55 clases
main
package cl.arbol; public class main { public static void main (String [] ar) { ArbolBinarioOrdenado abo = new ArbolBinarioOrdenado (); java.util.Scanner leer=new java.util.Scanner(System.in); int z; System.out.print("Ingrese el numero de Datos a capturar: "); z=leer.nextInt(); for(int i=1; i<=z;i++){ int m; System.out.println("Ingrese Dato Solo Numerico "+i+": ");m=leer.nextInt(); abo.insertar(m); } System.out.println ("Impresion entreorden: "); abo.imprimirEntre (); System.out.println ("Cantidad de nodos del árbol:"+abo.cantidad()); System.out.println ("Cantidad de nodos hoja:"+abo.cantidadnodosHoja()); System.out.println ("Impresion en entre orden junto al nivel del nodo."); abo.imprimirEntreConNivel(); System.out.print ("Artura del arbol:"); System.out.println(abo.retornarAltura()); abo.mayorValorl(); abo.borrarMenor(); System.out.println("Luego de borrar el menor:"); abo.imprimirEntre (); } }
ArbolBinarioOrdenado
package cl.arbol; class ArbolBinarioOrdenado { nodo raiz; private int cant; private int altura; //constructor public ArbolBinarioOrdenado() { raiz=null; } private void imprimirPre (nodo reco) { if (reco != null) { System.out.print(reco.info + " "); imprimirPre (reco.izq); imprimirPre (reco.der); } } public void imprimirPre () { imprimirPre (raiz); System.out.println(); } private void imprimirEntre (nodo reco) { if (reco != null) { imprimirEntre (reco.izq); System.out.print(reco.info + " "); imprimirEntre (reco.der); } } private void imprimirPost (nodo reco) { if (reco != null) { imprimirPost (reco.izq); imprimirPost (reco.der); System.out.print(reco.info + " "); } } public void imprimirPost () { imprimirPost (raiz); System.out.println(); } public void insertar (int info) { if (!existe(info)) { nodo nuevo; nuevo = new nodo (); nuevo.info = info; nuevo.izq = null; nuevo.der = null; if (raiz == null) raiz = nuevo; else { nodo anterior = null, reco; reco = raiz; while (reco != null) { anterior = reco; if (info < reco.info) reco = reco.izq; else reco = reco.der; } if (info < anterior.info) anterior.izq = nuevo; else anterior.der = nuevo; } } } public boolean existe(int info) { nodo reco=raiz; while (reco!=null) { if (info==reco.info) return true; else if (info>reco.info) reco=reco.der; else reco=reco.izq; } return false; } public void imprimirEntre () { imprimirEntre (raiz); System.out.println(); } private void cantidad(nodo reco) { if (reco!=null) { cant++; cantidad(reco.izq); cantidad(reco.der); } } public int cantidad() { cant = 0; cantidad(raiz); return cant; } private void cantidadnodosHoja(nodo reco) { if (reco!=null) { if (reco.izq==null && reco.der==null) cant++; cantidadnodosHoja(reco.izq); cantidadnodosHoja(reco.der); } } public int cantidadnodosHoja() { cant=0; cantidadnodosHoja(raiz); return cant; } private void imprimirEntreConNivel (nodo reco,int nivel) { if (reco != null) { imprimirEntreConNivel (reco.izq,nivel+1); System.out.print(reco.info + " ("+nivel+") - "); imprimirEntreConNivel (reco.der,nivel+1); } } public void imprimirEntreConNivel () { imprimirEntreConNivel (raiz,1); System.out.println(); } private void retornarAltura (nodo reco,int nivel) { if (reco != null) { retornarAltura (reco.izq,nivel+1); if (nivel>altura) altura=nivel; retornarAltura (reco.der,nivel+1); } } public int retornarAltura () { altura=0; retornarAltura (raiz,1); return altura; } public void mayorValorl() { if (raiz!=null) { nodo reco=raiz; while (reco.der!=null) reco=reco.der; System.out.println("Mayor valor del árbol:"+reco.info); } } public void borrarMenor() { if (raiz!=null) { if (raiz.izq==null) raiz=raiz.der; else { nodo atras=raiz; nodo reco=raiz.izq; while (reco.izq!=null) { atras=reco; reco=reco.izq; } atras.izq=reco.der; } } } }
nodo
package cl.arbol; public class nodo { int info; nodo izq, der; }
public static void main(String[] args) { int i; int r; int min; int max; int num; int cont; int vector[]; Scanner leer=new Scanner(System.in); cont=0; System.out.print(" Ingrese Tamaño del Vector: "); r = leer.nextInt(); vector = new int[r]; System.out.print("\n"); while (cont<r) { min=2; max=100; for(i=cont;i<r;i++) { System.out.print(" Ingrese numero: "); vector[i]=leer.nextInt();
num=vector[i];
if (num >= min && num <= max && num % 2==0) { System.out.print(" Numero bien ingresado!!"); System.out.print("\n"); cont++; System.out.print("\n"); } else { i--; System.out.print("Intenta denuevo, con N° pares entre 2 y 100"); System.out.print("\n"); System.out.print("\n"); } } } System.out.print("\n"); for (i=0;i<vector.length;i++) { System.out.println(" Los numeros son = " +vector[i]); }
Él termino "inteligencia artificial" fue expuesto por primera vez en 1956, por John McCarthy, durante la conferencia de Darthmounth, pero para entonces ya se había estado trabajando en ello durante cinco años en los cuales se había propuesto muchas definiciones distintas que en ningún caso habían logrado ser aceptadas totalmente por la comunidad investigadora. McCarthy la definió: "Es la ciencia e ingeniería de hacer máquinas inteligentes, especialmente programas de cómputo inteligentes" sin embargo a lo largo del tiempo han salido definiciones como : "El ofrecimiento por parte de la máquina de un comportamiento parecido al humano que es capaz de acomodarse o ajustarse a una disposición o situación real o ficticia y poder escoger de acuerdo a una serie de particularidades para dar una respuesta rápida y lo más acertada posible." (Costa 1995) "La Inteligencia Artificial estudia cómo lograr que las máquinas realicen tareas que, por el momento, son realizadas mejor por los humanos" (Rich y Knight 1994) "La IA es la rama de la ciencia de la computación que se ocupa de la automatización de la conducta inteligente." (Lugar y Stubblefied, 1993). "Estudio de las computaciones que permiten percibir, razonar y actuar" (Winston, 1992). "La IA es el estudio de cómo lograr que las computadoras realicen tareas que, por el momento, los humanos hacen mejor." (Rich, Knight, 1991). "La IA es el arte de crear maquinas con capacidad de realizar funciones que realizadas por personas requieren de inteligencia." (Kurzweil, 1990) "La IA es el campo de estudio que se enfoca a la explicación y emulación de la conducta inteligente en función de procesos computacionales." (Schalkoff, 1990). "La parte de la Informática que trata de Sistemas computarizados inteligentes, es decir, Sistemas que muestran las características que pueden asociarse a la inteligencia en lo que se refiere al comportamiento humano: comprensión del lenguaje, aprendizaje, razonamiento, resolución de problemas, etc." (Amat 1989) "Arte de construir maquinas capaces de hacer cosas que requerirían inteligencia en caso de que fuesen hechas por los seres humanos" (Minsky, 1986). "Automatización de actividades que vinculamos con procesos del pensamiento humano, tales como toma de decisiones resolución de problemas, aprendizaje" (Bellman, 1978). En el libro Inteligencia Artificial: Un Enfoque Moderno, Stuart Russell and Peter Norvig categorizan la inteligencia artificial tomando todas las definiciones existentes encontrando orientaciones hacia el actuar como humano o racionalmente y a su vez el pensar como humano o racionalmente. Actuar como humano. El modelo a seguir para la evaluar si un programa es inteligente corresponde al comportamiento humano. El llamado Test de Turing (1950) también utiliza este punto de vista. Pensar como humano. Lo importante es cómo se realiza el razonamiento y no el resultado de este razonamiento. La propuesta aquí es desarrollar sistemas que piensen del mismo modo que las personas. Pensar racionalmente. En este caso, la definición también se focaliza en el razonamiento, pero aquí se parte de la premisa de que existe una forma racional de pensar. La lógica permite la formalización del pensamiento y se utiliza para este objetivo. Actuar racionalmente. De nuevo el objetivo son los resultados, pero ahora evaluados de forma objetiva. Por ejemplo, el objetivo de un programa en un juego como el ajedrez será ganar. Para cumplir este objetivo es indiferente la forma de calcular el resultado. A medida que las personas se han ido interiorizando en la inteligencia artificial, se ha generado dos lineas de opiniones que sobresaltan en todos los debates con respecto al tema y su futuro, estos son la IA fuerte y la IA débil. Inteligencia artificial débil Se considera que los ordenadores únicamente pueden simular que razonan, y únicamente pueden actuar de forma inteligente. Las partidarios de la inteligencia artificial débil consideran que no será nunca posible construir ordenadores conscientes, y que un programa es una simulación de un proceso cognitivo pero no un proceso cognitivo en sí mismo. Inteligencia artificial fuerte En este caso se considera que un ordenador puede tener una mente y unos estados mentales, y que, por tanto, un día será posible construir uno con todas las capacidades de la mente humana. Este ordenador será capaz de razonar, imaginar, etc. Estos son algunos de los hitos mas importantes de los últimos 20 años:
CRONOGRAMA
1980 - Los Sistemas Expertos llegan hasta unas mil reglas
1981 - Kazuhiro Fuchi anuncia el proyecto japonés Quinta Generación - Estados Unidos constituyó la Mícroelectronics and Computer Technology Corporation (MCC). - IBM introduce el Personal Computer (PC)
1982 - John Hopfield resucita las redes neuronales - El primer sistema experto comercial que tuvo éxito, R 1.
1983
- DARPA anuncia la Iniciativa de Computación Estratégica
1984
- "Wabot-2" lee partituras y toca órgano
1986
- Jugador de ping-pong robótico de Anderson juega contra humanos
- La máquina HiTech de CMU compite a nivel de maestro senior en ajedrez
1987
- 1,900 sistemas expertos funcionando
- "El invierno de la IA"; mercado de máquinas Lisp saturado
1988
-Chip 386 aumenta la velocidad de los PC y compite con las máquinas LISP
1992
- Apple presenta Dylan, un lenguaje
de la familia Lisp, considerándolo el futuro de la programación
- X3J13 crea
un proyecto de estándar para Common Lisp
1994
- El ANSI Common Lisp se vuelve el
primer estándar ANSI OOPL
- Aparece 'Cog', el robot androide de Rodney Brooks
en el MIT
1996
- IBM, Crea la computadora
autónoma Deep Blue (RS/6000), la cual el campeón mundial de ajedrez Garry
Kasparov derrota estrechamente.
1997
- Campeón mundial de ajedrez,
pierde ante la computadora autónoma Deep Blue (RS/6000)
1999
- Cynthia Breazel, diseña el
Kismet, uno de los primeros robots en responder en forma natural
LA INTELIGENCIA ARTIFICIAL DESDE EL 2000 EN ADELANTE Y SUS
EFECTOS EN NUESTRAS VIDAS.
Durante los años 2000 en adelante encontramos grande usos de la inteligencia artificial en la vida diaria lo ha mejorado nuestra cálida de vida y muchas veces ha salvado vidas.
En el año 2000 se produjo una de muchas revoluciones gracias a IA nos referimos a la “VIDEO VIGILANCIA”
El desarrollo de este tipo de aplicaciones se inició con la incorporación de mecanismos digitales a los sistemas de CCTV y la investigación acerca de algoritmos para el procesamiento de video inteligente, a finales de los años noventa, se intensificó con el proyecto de la Oficina de Sistemas de Información de la Agencia de Investigación de Proyectos Avanzados de Defensa del gobierno de los Estados Unidos (DARPA, DefenceAdvancedResearchProjects Agency) para desarrollar un sistema de Monitoreo y Vigilancia de Video (VSAM, Video Surveillance And Monitoring) con propósitos inicialmente militares que posteriormente se extendieron a la seguridad en general con múltiples aplicaciones no solo en seguridad.
Hoy en día contamos poderoso es software de vigilancia en tiempo real capases de controlar múltiples cámaras instaladas en todo el planeta.
Un de estas aplicaciones son los aviones no tripulado utilizados en la milicia.
También encontramos usos domestico como el siguiente
Nacimiento de la Tele-medicina
Hoy en dia contamos con la capacidad de estar siempre conectados si ha esto le sumamos las nueva generaciones de robots nace el concepto de la
La telemedicina brindar asistencia médica a quien la requiera en sitios distantes en este concepto se incluyen dentro de este campo:
La educación para la salud
Salud pública
El desarrollo de programas de salud
Estudios epidemiológicos, entre otros.
El impulso básico para el desarrollo de la Telemedicina radica en su propia naturaleza, por la potencialidad de sus aplicaciones prácticas que la hacen necesaria tanto para médicos como para pacientes.
En el ño 2001 se realizó la primera operación transoceánica de la historia, por medio de la telemedicina y usando dos sistemas de cirugía telerrobótica un equipo médico, Un doctor en New York elimina la vesícula enferma de un paciente de 68 años ingresada en un hospital de Estrasburgo, Francia, esto por medio de un brazo robot.
Hoy en dia contamos con versiones mucho mas avanzadas que permite realizar operaciones de alta complejidad con un gran equipo medico. Un ejemplo de esto es el robots da Vince
También encontramos este concepto aplica a nuestra realidad en el sur de chile con el proyecto de TELMED-UDEC
Segunda Parte
La ro-botica al servicio del entretenimiento
En paralelo a todas estas aplicaciones continuo la carrera de las grandes industrias tecnologicas entre Honda y Sony esta centrada en crear el robots mas avanzado orientados a la industria del entretenimiento es así como en el año 2003 nace QRIO que no es el primer robots para Sony, pero si fue el más rápido robot bípedo y capaz de correr. Puede hacerlo a 14 metros por minuto.
El prototipo metálico QRIO, que pesa 7 kilos, mide 58 centímetros y tiene los ojos azules, hizo la demostración, ante un auditorio repleto de periodistas sobre su capacidad de perder el contacto con el suelo. También demostró que podía golpear una bola de béisbol y bailar con banderillas en las manos.
Este es uno de los vídeospromocionarles de para este producto, aun que este nunca se llego a comercializar
El nuevo Robot humanoide Nao
Nao es el robot de la empresa Aldelbaran robotics, El proyecto se inició a principios de 2005 y tiene por objetivo poner a disposición del público a un precio asequible un robot humanoide con mecánica, electrónica, y con características cognitivas.
Inicialmente fabricado para evolucionar en base a los comportamientos, Nao se lanzará al mercado como la iniciación ideal a los robots. Finalmente se convertirá en un compañero familiar autónomo. También se puede encargar de tareas más sofisticadas, (vigilancia, control domótico, etc)
Nao cuenta con una intuitiva interfaz de programación, Choregraphe,con la que toda la familia podrá disfrutar de la experiencia del robot. Sin embargo también satisfará el exigente tecno-adicto.
Algunas aplicaciones mas
El futuro de la industria automotriz: carros autónomos
La forma en que las personas se transportan podría cambiar radicalmente en un par de años, transformando nuevamente la historia del automóvil
Actualmente, las principales compañías en la industria automotriz han presentado grandes avances en cuanto a la Conectividad que se puede tener dentro de un vehículo.
La introducción de pantallas en cada asiento con aplicaciones, avanzados sistemas de GPS, comandos de voz para encender y apagar un carro, serán solo algunas de las comodidades que tendrá cada carro en los próximos años. Pero más allá de pensar en lo que un carro debe tener, otras compañías se han enfocado en lo que un automóvil puede hacer; es así como nació la idea de un carro que se maneja a si mismo: El carro autónomo.
Durante la última década varias marcas han estado trabajando en el desarrollo de la tecnología necesaria para que un automóvil se pueda conducir sin necesidad de interacción humana, dándoles libertad a sus pasajeros de hacer otras cosas sin tener que poner toda su atención en la vía. Inicialmente el desarrollo de estos prototipos era solo una prueba para desarrollar tecnología interactiva, pero gracias a la eficiencia que estos vehículos han alcanzado, muy pronto estarán en las vías de varias ciudades.
Un carro puede finalizar maniobras que un alto porcentaje de personas no podrían llevar a cabo sin entrenamiento especial. La configuración de los modelos existentes es muy similar, por ejemple el carro autónomo de Google cuenta con un radar rotatorio en la parte superior del carro, el cual reconoce un radio de 60 metros para crear un mapa en 3D de los objetos y personas que se encuentran alrededor del auto. Varias cámaras detectan objetos en movimiento y luces de transito. Otros 4 radares ubicados en las partes frontales y traseras determinan la distancia frente a otros objetos y ayudan a controlar la velocidad del vehículo. Un tercer grupo de radares ubicados cerca de las llantas traseras miden la distancia con los objetos a nivel lateral.
Pero no solo Google ha tomado la iniciativa de desarrollar carros autónomos; otras compañías como Audi y Volkswagen han desarrollado modelos propios, los cuales son completamente funcionales y son capaces de ejecutar maniobras como el prototipo creado por Google.
El objetivo de este proyecto es prevenir los errores humanos además de mejorar las condiciones de tráfico en cualquier vía.
Los automóviles autónomos pueden manejar más cerca entre si mismos y en carriles más estrechos, ya que el sistema de radares es capaz de reaccionar más rápido y con mayor precisión que una persona, pues la integración ente cámaras y radares es le proporciona al auto información para ejecutar este tipo de acciones.
Gracias al buen funcionamiento que han demostrado, los carros autónomos fueron oficialmente aceptados desde Marzo en el estado de Nevada, Estados Unidos. Los carros autónomos tendrán que usar una licencia de color rojo, la cual identificará de ahora en adelante a este tipo de automóviles.
Esta decisión beneficiará a compañías como Google, las cuales han estado probando sus prototipos en California, el estado que podría aprobar el uso de estos vehículos tras su aceptación en nevada. La aprobación para el uso de estos carros llevó a que el departamento de vehículos desarrollara leyes y reglamentos específicos para la operación de dichos carros.
A la fecha el carro de Google ha manejado 258,000 kilómetros autónoma mente con tan solo un accidente menor, el cual fue ocasionado por un error humano.