Tipos de Busqueda, Busqueda Heuristica
Tipos de búsqueda según estrategias de control:
ALGORITMO
Disponemos de información segura sobre qué operación aplicar
BUSQUEDA EXHAUSTIVA (A CIEGAS)
Exploración del árbol de búsqueda sistemáticamente pero sin información
BUSQUEDA HEURÍSTICA (INFORMADA)
información sobre el problema (información del dominio) que permite reducir la búsqueda
Del griego “heuriskein” que significa descubrir o encontrar
La heurística es una ayuda para guiar el proceso de búsqueda.
En general, con la utilización de heurísticas no se van a conseguir
siempre resultados óptimos (la mejor solución), pero si se van a conseguir resultados de buena calidad en un tiempo razonable.
Se utilizan en problemas complejos donde aparece el problema de la explosión combinatoria. En este tipo de problemas, los algoritmos de búsqueda exhaustiva tienen costos inaceptablemente altos (sólo son válidos para problemas sencillos).
Usar información “heuristica” para “adivinar” cuál nodo expandir
la heurística aparece bajo la forma de una función de evaluación basada en la información específica para el dominio o contexto relacionado con el problema
el problema de búsqueda se puede considerar como la maximización o minimización de una función.
La función de evaluación nos proporciona una manera de evaluar un nodo “localmente” basado en una estimación del costo de llegar desde el nodo actual al nodo meta.
Problemas con la Heurística
la heurística suele ser poco certera – problema abierto
puede no encontrar la mejor respuesta – superado por algoritmo A*
La heurística es una técnica la cual produce resultados, pero no siempre.
Mucho de lo que hacemos en la vida cotidiana involucra soluciones heurísticas a los problemas. Usualmente trabaja, o usualmente trabaja lo suficientemente bien, y cuando no trabaja, entonces se trata el problema de otra forma.
La palabra heurística, no solo describe los casos donde una solución podría no ser encontrada, sino que describe los casos donde deseamos encontrar la mejor solución.
La heurística podría ayudar a encontrar soluciones que pueden ser buenas, pero talvez no la mejor solución. Obviamente la medida de cuan bueno es y la evaluación de las técnicas heurísticas, es relativa al dominio, y a la tarea específica que la solución del problema será aplicada al dominio.
Goal-Driven y Busqueda a lo ancho
Conducida por el objetivo (goal driven – backward chaining)
- Tomar el objetivo que queremos resolver, establecer que reglas o movimientos legales podrían usarse para generar este objetivo y determinar que condiciones deben ser verdaderas para ser usadas.
- Estas condiciones constituyen los nuevos objetivos de la búsqueda y la búsqueda continua hacia atrás hasta encontrar los hechos del problema
BREATH FIRST.- Busqueda a lo ancho. La busqueda se realiza a lo largo del arbol o grafo, recorriendo todos los nodos de una correspondiente fila antes de pasar a la siguiente:
Este es una implementacion en pseudocodigo el cual representa el comportamiento de esta estrategia de busqueda:
Begin
open := [Start];
closed := [ ];
while open ? [ ] do
begin
remove leftmost state from open, call it X;
if X is a goal then returns SUCCESS
else begin
generate children of X;
put X on closed;
discard children of X if already on open or closed;
put remaining children on right end of open
end
end
return FAIL
end
Aplicacion en un arbol, donde el objetivo a encontrar es U
1. open = [A]; closed = [ ]
2. open = [B,C,D]; closed = [A]
3. open = [C,D,E,F]; closed = [B,A]
4. open = [D,E,F,G,H]; closed = [C,B,A]
5. open = [E,F,G,H,I,J]; closed = [D,C,B,A]
6. open = [F,G,H,I,J,K,L]; closed = [E,D,C,B,A]
7. open = [G,H,I,J,K,L,M] L ya esta en open; closed =[F,E,D,C,B,A]
8. open = [H,I,J,K,L,M,N]; closed = [G,F,E,D,C,B,A]
9. Continua hasta encontrar U, o open = [ ].
Areas de las Ciencias de la Computacion
Ares y Campos de Estudio en el que se involucran las Ciencias de la Computacion
- Fundamentos matematicos
- Teoria de la computacion
- Algoritmos y estructuras de datos
- Lenguajes de programacion
- Compiladores
- Bases de datos
- Sistemas concurrentes
- Sistemas paralelos
- Sistemas distribuidos
- Inteligencia artificial
- Graficos por computadora
- Computacion cientifica
Complejidad, automatas y Computabilidad
El campo de la Teoría de la computación en Ciencias de la computacion involucra las subareas de
- Teoría de la computación
- Teoría de autómatas: estudia matemáticamente máquinas abstractas y problemas que éstas son capaces de resolver
- Teoria de la computabilidad: estudia los problemas de decisión que pueden ser resueltos con un algoritmo o equivalentemente con una máquina de Turing.
- Teoría de la complejidad computacional: Estudia teoricamente los recursos requeridos durante el cálculo para resolver un problema (tiempo y espacio)
Ciencias de la COmputacion: Historia
La historia es anterio a que se inventara la computadora
Antes de 1920 , el término computador habalaba de un ser humano que realizaba cálculos
Los primeros investigadores en la cuestión de la computabilidad querian saber
- Qué cosas pueden ser computadas por un ser humano (siguiendo una lista de instrucciones por escrito)l, sin conocer el problema con anterioridad durante el tiempo que fuesea necesario
La motivación para este trabajo era realiza máquinas que computaran, y que pudieran automatizar labores y tareas largas y tediosas para una persona (que ademas podias tener errores)
En década de 1940 mientras se realizaban computadoras, el término computador se comenzó a utilizar para las máquinas en lugar de las personas.
El campo de las ciencias de la computación se fue ampliando mientras se veia que se podan realizar mas cosas que calculos matematicos para estudiar a la informática) en general.
La ciencia de la computación se establecio como una disciplina académica en la década del 60, con los primeros departamentos de ciencias de la computación en las universidad y las licenciaturas respectivas. (Fuente Wikipedia)
Tags: Computador
Criptografia, grafos, logica y teoria detipos
El campo de los Fundamentos matemáticos de las Ciencias de la Computacion involucra la criptografia, teoria de grafos, logica y teoria de tipos
- Criptografía: Algoritmos de proteccion de datos privados y cifrado de informacion
- Teoria de grafos: Estructuras de almacenamiento de datos y algoritmos de busqeda (problemas como del viajante, o la mejor ruta son clasicos en la tematica)
- Logica matemática: Se divide en cuatro subcampos: teoría de modelos, teoría de la demostración, teoría de conjuntos y teoría de la recursión.
- Teoria de tipos: Estudio y analisis sobre los tipos de datos y u aplicacion en las propiedades de los programas y su seguridad
Maquinas de Turing
La maquina de Turing es una idea que intrujo el cientifico Alan Turing para determinar si hay un metodo aplicado a lo matematico que nos diga si una sentencia es verdadera o no.
Alan Turing construyo “la maquina de Turing” , un modelo de matematica que es abstracto y concluyo que hay problemas que la maquina no puede resolver
Estrategias y Algoritmos de Busqueda de Informacion
Existen diferencia de estrategias de búsqueda de información:
- Algoritmo Primero a lo Ancho (BREATH-FIRST)
- Algoritmo Primero en Profundidad (DEPTH-FIRST)
- Búsqueda Heurística:
- Ascenso a Colina
- Recocido Simulado
- Búsqueda Primero el Mejor (BEST-FIRST)
- Teorema de Admisibilidad
- Algoritmo Guiado por Agenda
Las técnicas de solución de problemas en IA, en general, incorporan un proceso de búsqueda.
Todo proceso de búsqueda puede ser visualizado como el recorrido por un árbol en el que cada nodo representa un estado y cada rama representa las relaciones entre los estados cuyos nodos conecta.
En general, las reglas contienen en forma implícita el árbol, y se genera en forma explícita sólo aquellas partes que se decide explorar.
La dirección en la cual se conduce la búsqueda (hacia adelante o hacia atrás).
La estrategia de control, o forma de seleccionar las reglas que pueden ser aplicables. Los principales requerimientos de una buena estrategia de control son: que cause desplazamiento en el espacio de estado; y, que sea sistemático.
La forma de representar cada nodo del proceso de búsqueda (representación del conocimiento).
Muchas veces, tratar el proceso como búsqueda en un grafo en lugar de una búsqueda en un árbol, puede reducir el esfuerzo que se gasta en explorar senderos, esencialmente iguales, varias veces. Sin embargo, los requisitos asociados, son:
Cada vez que se genere un nodo se debe chequear para ver si ha sido generado antes.
Se deben introducir procedimientos especiales para que la búsqueda no quede atrapada en algún lazo.
Existen dos formas de conducer las busquedas:
Conducida por el objetivo (goal driven – backward chaining)
Tomar el objetivo que queremos resolver, establecer que reglas o movimientos legales podrían usarse para generar este objetivo y determinar que condiciones deben ser verdaderas para ser usadas.Estas condiciones constituyen los nuevos objetivos de la búsqueda y la búsqueda continua hacia atrás hasta encontrar los hechos del problema.
Conducida por los datos (data driven – forward chaining)
Búsqueda empieza con los hechos o datos conocidos y un conjunto de movimientos legales o reglas para cambiar de estado.La búsqueda se realiza aplicando las reglas a los datos o hechos, produciendo nuevos datos o hechos. Este proceso continua hasta generar una ruta que satisfaga la condición del objetivo.
Algoritmos de Generacion y Prueba y Breath First
Una mejora al algoritmo es asegurarse de que una solución no es probada más de una vez. Esto es sencillo si todas las soluciones son enumeradas – solo se deben probar en orden.
Si el conjunto de soluciones no se puede enumerar, otra alternativa es generar las soluciones de manera aleatoria, pero mantener una lista o arreglo con todas las soluciones probadas, y antes de probar una nueva.
El problema con esta alternativa es que toma mucho tiempo resolver un problema, la lista de soluciones probadas crece, y se podría estar invirtiendo mucho tiempo verificando si la solución fue probada antes.
Si el conjunto de soluciones posibles es grande – o infinita, lo mejor es generar las soluciones de manera aleatoria y sin verificar. La posibilidad de que una solución fue probada más de una vez es baja, y el consumo de tiempo en verificarlo es alto.
Breath First:
Algoritmo:
Begin
open := [Start];
closed := [ ];
while open ? [ ] do
begin
remove leftmost state from open, call it X;
if X is a goal then returns SUCCESS
else begin
generate children of X;
put X on closed;
discard children of X if already on open or closed;
put remaining children on right end of open
end
end
return FAIL
end





