https://github.com/gitfrandu4/graphsearchalgorithms
Práctica 1 de FSI - Implementación de algorimos de búsqueda en grafos (Python)
https://github.com/gitfrandu4/graphsearchalgorithms
grafos ia python
Last synced: 6 months ago
JSON representation
Práctica 1 de FSI - Implementación de algorimos de búsqueda en grafos (Python)
- Host: GitHub
- URL: https://github.com/gitfrandu4/graphsearchalgorithms
- Owner: gitfrandu4
- Created: 2020-03-10T23:53:35.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-27T03:04:17.000Z (over 6 years ago)
- Last Synced: 2024-12-30T09:32:47.088Z (over 1 year ago)
- Topics: grafos, ia, python
- Language: Python
- Homepage:
- Size: 157 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# GraphSearchAlgorithms
Práctica 1 de Fundamentos de los Sistemas Inteligentes

## Práctica 1 - Primera parte
#### Tareas
* A partir del código base se implementa el método de búsqueda **Ramificación y Acotación** (_Branch-and-Bound Search_). Utilizando como problema el grafo de las ciudades de Rumanía presente en el código.
* Comparación de nodos expandidos por este método en comparación a los métodos de búsqueda **Primero en Anchura** (_Breadth-first Search_) y **Primero en profundidad** (_Depth-first Search_):
```
--------------------Primera parte--------------------
Nodos expandidos: 21
Breadth-first Search: [, , , ] : 211 + 99 + 140 = 450
Nodos expandidos: 18
Depth-first Search: [, , , , , , , ] : 101+138+120+75+70+111+118=733
Nodos expandidos: 31
Branch-and-Bound Search: [, , , , ] : 101 + 97 + 80 + 140 = 418
```
## Práctica 1 - Segunda parte
### Ramificación y Acotación con Subestimación
La estrategia de búsqueda **Ramificación y Acotación con Subestimación** pertenece a las estrategias de **búsqueda informada**. En este caso, además de utilizar el coste acumulado de un camino desde el estado inicial hasta un cierto estado del grafo, se utiliza una **estimación heurística** hasta el estado final para ordenar la lista abierta. De esta forma, dado un determinado nodo _n_ del árbol del búsqueda, la expresión de coste estimado _f(n)_ será:

Donde _g(n)_ representa el coste acumulado y _h(n)_ la heurística utilizada. Para que el camino encontrado sea **óptimo**, la heurística debe ser **consistente**. Es decir, ha de cumplir que para cada nodo _n_ y cada nodo hijo _n’_ alcanzado mediante la acción _a_, el valor heurístico _h(n)_ debe ser siempre menor o igual al valor heurístico _h(n’)_ más el coste del nodo _n_ al _n’_ mediante la acción _a_.

#### Tareas
* A partir del código base se implementa el método de búsqueda **Ramificación y Acotación con Subestimación**.
Como heurística se utilizará la distancia en línea recta entre cada estado y el estado final.
* Comparación de la cantidad de nodos expandidos por este método con relación al método ramificación y acotación:
```
--------------------Segunda parte--------------------
Ejemplo 1: Desde Oradea hasta Bucharest
Nodos expandidos: 27
Branch-and-Bound Search: [, , , , ]
Nodos expandidos: 17
B&Bound-with-Und Search: [, , , , ]
-----------------------------------------------------
Ejemplo 2: Desde Timisoara hasta Neamt
Nodos expandidos: 46
Branch-and-Bound Search: [, , , , , , , , , ]
Nodos expandidos: 43
B&Bound-with-Und Search: [, , , , , , , , , ]
-----------------------------------------------------
Ejemplo 3: Desde Urziceni hasta Eforie
Nodos expandidos: 13
Branch-and-Bound Search: [, , ]
Nodos expandidos: 6
B&Bound-with-Und Search: [, , ]
```