Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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 days 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 (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-03-27T03:04:17.000Z (almost 5 years ago)
- Last Synced: 2023-12-09T19:42:39.137Z (about 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á:
![Eqn1](https://github.com/gitfrandu4/GraphSearchAlgorithms/blob/master/img/Eqn2.png)
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_.
![Eqn1](https://github.com/gitfrandu4/GraphSearchAlgorithms/blob/master/img/Eqn1.png)
#### 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 NeamtNodos expandidos: 46
Branch-and-Bound Search: [, , , , , , , , , ]Nodos expandidos: 43
B&Bound-with-Und Search: [, , , , , , , , , ]-----------------------------------------------------
Ejemplo 3: Desde Urziceni hasta EforieNodos expandidos: 13
Branch-and-Bound Search: [, , ]Nodos expandidos: 6
B&Bound-with-Und Search: [, , ]
```