|
2 | 2 |
|
3 | 3 | Реализация алгоритма Дейкстры для поиска кратчайшего пути между двумя вершинами и оптимального маршрута на 3D поверхности с использованием очереди с приоритетом (PriorityQueue). |
4 | 4 |
|
5 | | -## Использование |
| 5 | +## Пример 1 (Обход простого препятствия) |
6 | 6 |
|
7 | 7 | Исходный файл obstacle1.csv: |
8 | 8 |
|
@@ -69,3 +69,48 @@ Coordinates of shortest path: |
69 | 69 | (3, 4) |
70 | 70 | Length of shortest path: 11,4852813742386 |
71 | 71 | ``` |
| 72 | + |
| 73 | +Результат: |
| 74 | + |
| 75 | + |
| 76 | + |
| 77 | + |
| 78 | +## Пример 2 (Поиск оптимального пути на 3D-поверхности) |
| 79 | + |
| 80 | +Program.cs: |
| 81 | + |
| 82 | +``` csharp |
| 83 | + // Создаем несколько экземпляров параметров для Гауссиана для имитации гор (холмов) и одного оврага |
| 84 | + GaussianParameter gaussianParameter1 = new GaussianParameter(1.5, 0.5, 0.5, 2.0, 4.0); |
| 85 | + GaussianParameter gaussianParameter2 = new GaussianParameter(1.0, 0.5, 0.5, 7.5, 1.0); |
| 86 | + GaussianParameter gaussianParameter3 = new GaussianParameter(-0.5, 0.2, 1.0, 5.0, 0.5); |
| 87 | + GaussianParameter gaussianParameter4 = new GaussianParameter(1.0, 0.5, 0.8, 3.5, 2.2); |
| 88 | + |
| 89 | + // Инициализируем граф |
| 90 | + Graph graph = new Graph(0.1, 0.1, 101, 51, 20.0, gaussianParameter1, gaussianParameter2, gaussianParameter3, gaussianParameter4); |
| 91 | + |
| 92 | + // Создаем искуственные сооружения на карте |
| 93 | + graph.CreateBuilding(new Point2D(57, 20), 2, 20, 0.3); |
| 94 | + graph.CreateBuilding(new Point2D(64, 16), 3, 5, 0.3); |
| 95 | + graph.CreateBuilding(new Point2D(18, 4), 2, 5, 0.3); |
| 96 | + graph.CreateBuilding(new Point2D(10, 14), 4, 2, 0.4); |
| 97 | + graph.CreateBuilding(new Point2D(64, 29), 5, 2, 0.4); |
| 98 | + graph.CreateBuilding(new Point2D(14, 24), 5, 2, 0.3); |
| 99 | + |
| 100 | + // Записываем получившуюся поверхность в файл |
| 101 | + string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); |
| 102 | + graph.WriteSurfaceToFile(Path.Combine(docPath, "surface.txt")); |
| 103 | + |
| 104 | + // Вычисляем кратчайший путь |
| 105 | + double shortestPathLength = 0.0; |
| 106 | + |
| 107 | + Point2D startPoint = new Point2D(92, 7); |
| 108 | + Point2D goalPoint = new Point2D(14, 21); |
| 109 | + |
| 110 | + List<Point2D> shortestPath = graph.FindShortestPathAndLength(startPoint, goalPoint, out shortestPathLength); |
| 111 | + |
| 112 | + // Записываем найденный путь в файл |
| 113 | + WriteShortestPathToFile(shortestPath, graph, Path.Combine(docPath, "shortestPath.txt")); |
| 114 | + |
| 115 | + Console.ReadLine(); |
| 116 | +``` |
0 commit comments