2026-rff_mp/skorohodovsa/task_2/practice/main.ipynb

938 lines
221 KiB
Plaintext
Raw Normal View History

2026-05-25 07:23:00 +00:00
{
"cells": [
{
"cell_type": "markdown",
"id": "b41a67fc",
"metadata": {},
"source": [
"# Экспериментальная часть "
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "3986182c",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import sys\n",
"\n",
"sys.path.insert(0, os.path.abspath(\"..\"))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c304f83d",
"metadata": {},
"outputs": [],
"source": [
"from source.build.builder import TextFileBuilder\n",
"from source.models.base import Maze\n",
"from source.strategy import BFSStrategy, DFSStrategy, AStarStrategy\n",
"from source.strategy.solver import MazeSolver, SearchStats"
]
},
{
"cell_type": "markdown",
"id": "f4d32c9b",
"metadata": {},
"source": [
"**Задача:** Сравнить эффективность реализованных стратегий на лабиринтах разной сложности."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "4233a72f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<source.models.base.Maze at 0x27e49568d70>,\n",
" <source.models.base.Maze at 0x27e49383ed0>,\n",
" <source.models.base.Maze at 0x27e497bc050>,\n",
" <source.models.base.Maze at 0x27e49590640>,\n",
" <source.models.base.Maze at 0x27e49590770>,\n",
" <source.models.base.Maze at 0x27e49555250>,\n",
" <source.models.base.Maze at 0x27e495746b0>,\n",
" <source.models.base.Maze at 0x27e495747c0>,\n",
" <source.models.base.Maze at 0x27e4931ef50>,\n",
" <source.models.base.Maze at 0x27e4931f050>,\n",
" <source.models.base.Maze at 0x27e4955e3f0>,\n",
" <source.models.base.Maze at 0x27e4955e4e0>,\n",
" <source.models.base.Maze at 0x27e4948fcb0>,\n",
" <source.models.base.Maze at 0x27e4948fd90>,\n",
" <source.models.base.Maze at 0x27e49584390>,\n",
" <source.models.base.Maze at 0x27e4954fb90>,\n",
" <source.models.base.Maze at 0x27e4954fa10>,\n",
" <source.models.base.Maze at 0x27e4742f490>,\n",
" <source.models.base.Maze at 0x27e473df8b0>,\n",
" <source.models.base.Maze at 0x27e4951f930>,\n",
" <source.models.base.Maze at 0x27e4951fbb0>,\n",
" <source.models.base.Maze at 0x27e49511d90>,\n",
" <source.models.base.Maze at 0x27e4a0506d0>,\n",
" <source.models.base.Maze at 0x27e4a050bd0>,\n",
" <source.models.base.Maze at 0x27e4a083f50>,\n",
" <source.models.base.Maze at 0x27e4a08df60>,\n",
" <source.models.base.Maze at 0x27e49516ab0>,\n",
" <source.models.base.Maze at 0x27e49516a50>,\n",
" <source.models.base.Maze at 0x27e49516db0>,\n",
" <source.models.base.Maze at 0x27e49516bd0>,\n",
" <source.models.base.Maze at 0x27e49516b70>,\n",
" <source.models.base.Maze at 0x27e49517170>,\n",
" <source.models.base.Maze at 0x27e49516b10>,\n",
" <source.models.base.Maze at 0x27e49517110>,\n",
" <source.models.base.Maze at 0x27e495171d0>,\n",
" <source.models.base.Maze at 0x27e49517230>,\n",
" <source.models.base.Maze at 0x27e49517290>,\n",
" <source.models.base.Maze at 0x27e495172f0>,\n",
" <source.models.base.Maze at 0x27e49517350>,\n",
" <source.models.base.Maze at 0x27e495173b0>,\n",
" <source.models.base.Maze at 0x27e49517470>,\n",
" <source.models.base.Maze at 0x27e49517530>,\n",
" <source.models.base.Maze at 0x27e49517590>,\n",
" <source.models.base.Maze at 0x27e495175f0>,\n",
" <source.models.base.Maze at 0x27e49517650>,\n",
" <source.models.base.Maze at 0x27e495176b0>,\n",
" <source.models.base.Maze at 0x27e49517710>,\n",
" <source.models.base.Maze at 0x27e49517770>,\n",
" <source.models.base.Maze at 0x27e495177d0>,\n",
" <source.models.base.Maze at 0x27e49517830>]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"filenames: list[str] = os.listdir(\"../source/templates\")\n",
"\n",
"list_maze: list[Maze] = [\n",
" TextFileBuilder().build_from_file(filename=\"../source/templates/\" + filename)\n",
" for filename in filenames\n",
"]\n",
"\n",
"list_maze"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "8c9592fb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"50"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(filenames)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "04e5e6a6",
"metadata": {},
"outputs": [],
"source": [
"strategies = {\n",
" \"BFS\": BFSStrategy(),\n",
" \"DFS\": DFSStrategy(),\n",
" \"A*\": AStarStrategy(),\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "3ccf351f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v1.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v1.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v1.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v10.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v10.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v10.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v2.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v2.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v2.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v3.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v3.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v3.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v4.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v4.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v4.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v5.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v5.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v5.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v6.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v6.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v6.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v7.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v7.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v7.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v8.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v8.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v8.txt | A*\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v9.txt | BFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v9.txt | DFS\n",
"Выходная клетка не найдена в лабиринте | 20x20_noexit_v9.txt | A*\n"
]
},
{
"data": {
"text/plain": [
"[{'лабиринт': '100x100_spaghetti_v1.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 9.698449999996228,\n",
" 'посещено_клеток': 205.0,\n",
" 'длина_пути': 205.0},\n",
" {'лабиринт': '100x100_spaghetti_v1.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 7.488289999992048,\n",
" 'посещено_клеток': 2129.0,\n",
" 'длина_пути': 2129.0},\n",
" {'лабиринт': '100x100_spaghetti_v1.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 7.629470000074434,\n",
" 'посещено_клеток': 205.0,\n",
" 'длина_пути': 205.0},\n",
" {'лабиринт': '100x100_spaghetti_v10.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.57915999999932,\n",
" 'посещено_клеток': 207.0,\n",
" 'длина_пути': 207.0},\n",
" {'лабиринт': '100x100_spaghetti_v10.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 8.580700000084107,\n",
" 'посещено_клеток': 2489.0,\n",
" 'длина_пути': 2489.0},\n",
" {'лабиринт': '100x100_spaghetti_v10.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 8.167220000041198,\n",
" 'посещено_клеток': 207.0,\n",
" 'длина_пути': 207.0},\n",
" {'лабиринт': '100x100_spaghetti_v2.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.6136500000066,\n",
" 'посещено_клеток': 217.0,\n",
" 'длина_пути': 217.0},\n",
" {'лабиринт': '100x100_spaghetti_v2.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 6.336869999950068,\n",
" 'посещено_клеток': 2063.0,\n",
" 'длина_пути': 2063.0},\n",
" {'лабиринт': '100x100_spaghetti_v2.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 10.417360000155895,\n",
" 'посещено_клеток': 217.0,\n",
" 'длина_пути': 217.0},\n",
" {'лабиринт': '100x100_spaghetti_v3.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.563159999994241,\n",
" 'посещено_клеток': 217.0,\n",
" 'длина_пути': 217.0},\n",
" {'лабиринт': '100x100_spaghetti_v3.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 5.783009999913702,\n",
" 'посещено_клеток': 2107.0,\n",
" 'длина_пути': 2107.0},\n",
" {'лабиринт': '100x100_spaghetti_v3.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 6.953359999988606,\n",
" 'посещено_клеток': 217.0,\n",
" 'длина_пути': 217.0},\n",
" {'лабиринт': '100x100_spaghetti_v4.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.79095000000234,\n",
" 'посещено_клеток': 205.0,\n",
" 'длина_пути': 205.0},\n",
" {'лабиринт': '100x100_spaghetti_v4.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 6.422280000060709,\n",
" 'посещено_клеток': 2409.0,\n",
" 'длина_пути': 2409.0},\n",
" {'лабиринт': '100x100_spaghetti_v4.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 6.4153799999985495,\n",
" 'посещено_клеток': 205.0,\n",
" 'длина_пути': 205.0},\n",
" {'лабиринт': '100x100_spaghetti_v5.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.864429999994172,\n",
" 'посещено_клеток': 217.0,\n",
" 'длина_пути': 217.0},\n",
" {'лабиринт': '100x100_spaghetti_v5.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 7.053909999922325,\n",
" 'посещено_клеток': 2071.0,\n",
" 'длина_пути': 2071.0},\n",
" {'лабиринт': '100x100_spaghetti_v5.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 10.017580000112503,\n",
" 'посещено_клеток': 217.0,\n",
" 'длина_пути': 217.0},\n",
" {'лабиринт': '100x100_spaghetti_v6.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 9.399200000052588,\n",
" 'посещено_клеток': 243.0,\n",
" 'длина_пути': 243.0},\n",
" {'лабиринт': '100x100_spaghetti_v6.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 7.747049999989031,\n",
" 'посещено_клеток': 1869.0,\n",
" 'длина_пути': 1869.0},\n",
" {'лабиринт': '100x100_spaghetti_v6.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 14.121079999995345,\n",
" 'посещено_клеток': 243.0,\n",
" 'длина_пути': 243.0},\n",
" {'лабиринт': '100x100_spaghetti_v7.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.773490000021411,\n",
" 'посещено_клеток': 211.0,\n",
" 'длина_пути': 211.0},\n",
" {'лабиринт': '100x100_spaghetti_v7.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 6.66454999995949,\n",
" 'посещено_клеток': 2283.0,\n",
" 'длина_пути': 2283.0},\n",
" {'лабиринт': '100x100_spaghetti_v7.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 7.22499999997126,\n",
" 'посещено_клеток': 211.0,\n",
" 'длина_пути': 211.0},\n",
" {'лабиринт': '100x100_spaghetti_v8.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 8.687369999961447,\n",
" 'посещено_клеток': 221.0,\n",
" 'длина_пути': 221.0},\n",
" {'лабиринт': '100x100_spaghetti_v8.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 7.4791699999423145,\n",
" 'посещено_клеток': 2473.0,\n",
" 'длина_пути': 2473.0},\n",
" {'лабиринт': '100x100_spaghetti_v8.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 10.324829999944996,\n",
" 'посещено_клеток': 221.0,\n",
" 'длина_пути': 221.0},\n",
" {'лабиринт': '100x100_spaghetti_v9.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 9.33376999992106,\n",
" 'посещено_клеток': 209.0,\n",
" 'длина_пути': 209.0},\n",
" {'лабиринт': '100x100_spaghetti_v9.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 6.118089999927179,\n",
" 'посещено_клеток': 1939.0,\n",
" 'длина_пути': 1939.0},\n",
" {'лабиринт': '100x100_spaghetti_v9.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 7.4974299999212235,\n",
" 'посещено_клеток': 209.0,\n",
" 'длина_пути': 209.0},\n",
" {'лабиринт': '10x10_path_v1.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.03240000014557154,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v1.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.03378000001248438,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v1.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.03725999999915075,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v10.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.030790000027991482,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v10.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.035979999984192546,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v10.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.03738000000339525,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v2.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.035089999892079504,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v2.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.045300000101633486,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v2.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.04377000000204134,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v3.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.035430000025371555,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v3.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.055879999990793294,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v3.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.04907000002276618,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v4.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.053650000018024,\n",
" 'посещено_клеток': 29.0,\n",
" 'длина_пути': 29.0},\n",
" {'лабиринт': '10x10_path_v4.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.09142999997493462,\n",
" 'посещено_клеток': 29.0,\n",
" 'длина_пути': 29.0},\n",
" {'лабиринт': '10x10_path_v4.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.09646000012253353,\n",
" 'посещено_клеток': 29.0,\n",
" 'длина_пути': 29.0},\n",
" {'лабиринт': '10x10_path_v5.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.035020000041185995,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v5.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.03366999999343534,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v5.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.037369999972725054,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v6.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.03128999992441095,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v6.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.03374999996594852,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v6.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.037149999934626976,\n",
" 'посещено_клеток': 13.0,\n",
" 'длина_пути': 13.0},\n",
" {'лабиринт': '10x10_path_v7.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.040439999975205865,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v7.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.05008999996789498,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v7.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.04825999994864105,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v8.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.04994999994778482,\n",
" 'посещено_клеток': 29.0,\n",
" 'длина_пути': 29.0},\n",
" {'лабиринт': '10x10_path_v8.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.058220000073561096,\n",
" 'посещено_клеток': 29.0,\n",
" 'длина_пути': 29.0},\n",
" {'лабиринт': '10x10_path_v8.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.08468999990327575,\n",
" 'посещено_клеток': 29.0,\n",
" 'длина_пути': 29.0},\n",
" {'лабиринт': '10x10_path_v9.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.048520000018470455,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v9.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.04457000009097101,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '10x10_path_v9.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.04779000005328271,\n",
" 'посещено_клеток': 17.0,\n",
" 'длина_пути': 17.0},\n",
" {'лабиринт': '30x30_empty_v1.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.3075400000161608,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v1.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.7962099999531347,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v1.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 3.0833899998924608,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v10.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.6444799998680537,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v10.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.1289500000657426,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v10.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 3.0003100000158156,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v2.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.5947500000493164,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v2.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.0904399999617453,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v2.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.242679999972097,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v3.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.3086099999327416,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v3.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.0075400000459922,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v3.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.17491000003065,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v4.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.5689699999711593,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v4.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.0746400001153233,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v4.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.2863700000471,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v5.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.3352300000406103,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v5.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.8594300000368094,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v5.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.264869999999064,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v6.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.158610000175031,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v6.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.7807300000422401,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v6.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.158290000170382,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v7.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.1674999999286229,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v7.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.7544099999449827,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v7.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.252279999993334,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v8.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.248879999957353,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v8.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.7802099999480561,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v8.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.2779600000831124,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v9.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.201050000054238,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '30x30_empty_v9.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 0.7864399999107263,\n",
" 'посещено_клеток': 379.0,\n",
" 'длина_пути': 379.0},\n",
" {'лабиринт': '30x30_empty_v9.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.155060000040976,\n",
" 'посещено_клеток': 55.0,\n",
" 'длина_пути': 55.0},\n",
" {'лабиринт': '50x50_deadends_v1.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.8954199999825505,\n",
" 'посещено_клеток': 729.0,\n",
" 'длина_пути': 729.0},\n",
" {'лабиринт': '50x50_deadends_v1.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.8011099999966973,\n",
" 'посещено_клеток': 729.0,\n",
" 'длина_пути': 729.0},\n",
" {'лабиринт': '50x50_deadends_v1.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.820240000028207,\n",
" 'посещено_клеток': 729.0,\n",
" 'длина_пути': 729.0},\n",
" {'лабиринт': '50x50_deadends_v10.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.7890000001225417,\n",
" 'посещено_клеток': 261.0,\n",
" 'длина_пути': 261.0},\n",
" {'лабиринт': '50x50_deadends_v10.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.94999999994252,\n",
" 'посещено_клеток': 261.0,\n",
" 'длина_пути': 261.0},\n",
" {'лабиринт': '50x50_deadends_v10.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.0044500000731205,\n",
" 'посещено_клеток': 261.0,\n",
" 'длина_пути': 261.0},\n",
" {'лабиринт': '50x50_deadends_v2.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.0780099999919912,\n",
" 'посещено_клеток': 249.0,\n",
" 'длина_пути': 249.0},\n",
" {'лабиринт': '50x50_deadends_v2.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.8470900000920665,\n",
" 'посещено_клеток': 249.0,\n",
" 'длина_пути': 249.0},\n",
" {'лабиринт': '50x50_deadends_v2.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.1555500000213215,\n",
" 'посещено_клеток': 249.0,\n",
" 'длина_пути': 249.0},\n",
" {'лабиринт': '50x50_deadends_v3.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.9816600000704057,\n",
" 'посещено_клеток': 297.0,\n",
" 'длина_пути': 297.0},\n",
" {'лабиринт': '50x50_deadends_v3.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.8496700000014243,\n",
" 'посещено_клеток': 297.0,\n",
" 'длина_пути': 297.0},\n",
" {'лабиринт': '50x50_deadends_v3.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.18772000005265,\n",
" 'посещено_клеток': 297.0,\n",
" 'длина_пути': 297.0},\n",
" {'лабиринт': '50x50_deadends_v4.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.5539699999862933,\n",
" 'посещено_клеток': 413.0,\n",
" 'длина_пути': 413.0},\n",
" {'лабиринт': '50x50_deadends_v4.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.6492100000050414,\n",
" 'посещено_клеток': 413.0,\n",
" 'длина_пути': 413.0},\n",
" {'лабиринт': '50x50_deadends_v4.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.9135399998958746,\n",
" 'посещено_клеток': 413.0,\n",
" 'длина_пути': 413.0},\n",
" {'лабиринт': '50x50_deadends_v5.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.1528699998507363,\n",
" 'посещено_клеток': 309.0,\n",
" 'длина_пути': 309.0},\n",
" {'лабиринт': '50x50_deadends_v5.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.7570300000897987,\n",
" 'посещено_клеток': 309.0,\n",
" 'длина_пути': 309.0},\n",
" {'лабиринт': '50x50_deadends_v5.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.199769999993805,\n",
" 'посещено_клеток': 309.0,\n",
" 'длина_пути': 309.0},\n",
" {'лабиринт': '50x50_deadends_v6.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.0987699999986944,\n",
" 'посещено_клеток': 337.0,\n",
" 'длина_пути': 337.0},\n",
" {'лабиринт': '50x50_deadends_v6.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.9475800000236632,\n",
" 'посещено_клеток': 337.0,\n",
" 'длина_пути': 337.0},\n",
" {'лабиринт': '50x50_deadends_v6.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.3809099999434693,\n",
" 'посещено_клеток': 337.0,\n",
" 'длина_пути': 337.0},\n",
" {'лабиринт': '50x50_deadends_v7.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.8687199999258155,\n",
" 'посещено_клеток': 261.0,\n",
" 'длина_пути': 261.0},\n",
" {'лабиринт': '50x50_deadends_v7.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.8890300000293792,\n",
" 'посещено_клеток': 261.0,\n",
" 'длина_пути': 261.0},\n",
" {'лабиринт': '50x50_deadends_v7.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 1.1017699999683828,\n",
" 'посещено_клеток': 261.0,\n",
" 'длина_пути': 261.0},\n",
" {'лабиринт': '50x50_deadends_v8.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 1.7002200001115853,\n",
" 'посещено_клеток': 565.0,\n",
" 'длина_пути': 565.0},\n",
" {'лабиринт': '50x50_deadends_v8.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.7665699999724893,\n",
" 'посещено_клеток': 565.0,\n",
" 'длина_пути': 565.0},\n",
" {'лабиринт': '50x50_deadends_v8.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 2.3602600000231178,\n",
" 'посещено_клеток': 565.0,\n",
" 'длина_пути': 565.0},\n",
" {'лабиринт': '50x50_deadends_v9.txt',\n",
" 'стратегия': 'BFS',\n",
" 'время_мс': 0.7835800000066229,\n",
" 'посещено_клеток': 209.0,\n",
" 'длина_пути': 209.0},\n",
" {'лабиринт': '50x50_deadends_v9.txt',\n",
" 'стратегия': 'DFS',\n",
" 'время_мс': 1.0580000001027656,\n",
" 'посещено_клеток': 209.0,\n",
" 'длина_пути': 209.0},\n",
" {'лабиринт': '50x50_deadends_v9.txt',\n",
" 'стратегия': 'A*',\n",
" 'время_мс': 0.8593499999733467,\n",
" 'посещено_клеток': 209.0,\n",
" 'длина_пути': 209.0}]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RUNS = 10\n",
"results = []\n",
"\n",
"\n",
"for filename, maze in zip(filenames, list_maze):\n",
" for strategy_name, strategy in strategies.items():\n",
" try:\n",
" solver = MazeSolver(maze, strategy)\n",
"\n",
" times, visited, lengths = [], [], []\n",
" for _ in range(RUNS):\n",
" stats = solver.solve()\n",
" times.append(stats.elapsed_ms)\n",
" visited.append(stats.visited_count)\n",
" lengths.append(stats.path_length)\n",
"\n",
" results.append(\n",
" {\n",
" \"лабиринт\": filename,\n",
" \"стратегия\": strategy_name,\n",
" \"время_мс\": sum(times) / RUNS,\n",
" \"посещено_клеток\": sum(visited) / RUNS,\n",
" \"длина_пути\": sum(lengths) / RUNS,\n",
" }\n",
" )\n",
" except Exception as ex:\n",
" print(ex, filename, strategy_name, sep=\" | \")\n",
"\n",
"results"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "f6cfb407",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"120"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(results)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "c6d14f8d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1200x1400 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"\n",
"df = pd.DataFrame(results)\n",
"\n",
"metrics = [\"время_мс\", \"посещено_клеток\", \"длина_пути\"]\n",
"titles = [\"Время (мс)\", \"Посещено клеток\", \"Длина пути\"]\n",
"colors = {\"BFS\": \"#4C72B0\", \"DFS\": \"#DD8452\", \"A*\": \"#55A868\"}\n",
"\n",
"fig, axes = plt.subplots(len(metrics), 1, figsize=(12, 14))\n",
"\n",
"for ax, metric, title in zip(axes, metrics, titles):\n",
" for strategy_name in df[\"стратегия\"].unique():\n",
" subset = df[df[\"стратегия\"] == strategy_name].reset_index(drop=True)\n",
" ax.bar(\n",
" [\n",
" i + list(df[\"стратегия\"].unique()).index(strategy_name) * 0.25\n",
" for i in range(len(subset))\n",
" ],\n",
" subset[metric],\n",
" width=0.25,\n",
" label=strategy_name,\n",
" color=colors[strategy_name],\n",
" )\n",
" ax.set_title(title, fontsize=13)\n",
" ax.set_xticks([i + 0.25 for i in range(len(df[\"лабиринт\"].unique()))])\n",
" ax.set_xticklabels(df[\"лабиринт\"].unique(), rotation=90, ha=\"right\")\n",
" ax.legend()\n",
" ax.grid(axis=\"y\", alpha=0.3)\n",
"\n",
"plt.tight_layout()\n",
"plt.savefig(\"results.png\", dpi=150)\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.14.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}