编写一个主函数来测试普利姆算法,克鲁斯卡尔算法和狄克斯特拉算法
时间: 2024-07-28 16:00:19 浏览: 66
C++实现普利姆算法(包含详细的算法介绍)
在编程中,你可以创建一个主函数来测试不同的图算法,比如普利姆(Prim's Algorithm)用于寻找最小生成树,克鲁斯卡尔(Kruskal's Algorithm)也是寻找最小生成树,而狄克斯特拉(Dijkstra's Algorithm)则用于求解单源最短路径问题。这里是一个基本的框架,假设你正在使用像C++这样的语言:
```cpp
#include <iostream>
#include <vector>
#include <set>
#include <queue>
// 假设你已经有了代表图的数据结构和相关的函数定义
void primAlgorithm(const Graph& graph, std::vector<int>& minCostTree) {
// Prim's Algorithm implementation
}
void kruskalAlgorithm(const Graph& graph, std::vector<int>& minCostTree) {
// Kruskal's Algorithm implementation
}
void dijkstraAlgorithm(const Graph& graph, int startNode, std::vector<int>& shortestDistances) {
// Dijkstra's Algorithm implementation
}
int main() {
// 创建一个图的实例
Graph graph;
// 初始化并填充图数据
// 测试Prim's Algorithm
std::vector<int> primResult;
primAlgorithm(graph, primResult);
std::cout << "Prim's Minimum Spanning Tree: ";
for (const auto& edge : primResult) {
std::cout << edge << " ";
}
std::cout << std::endl;
// 测试Kruskal's Algorithm
std::vector<int> kruskalResult;
kruskalAlgorithm(graph, kruskalResult);
std::cout << "Kruskal's Minimum Spanning Tree: ";
for (const auto& edge : kruskalResult) {
std::cout << edge << " ";
}
std::cout << std::endl;
// 测试Dijkstra's Algorithm (示例可能仅适用于单源最短路径)
std::vector<int> dijkstraDistances;
dijkstraAlgorithm(graph, 0, dijkstraDistances);
std::cout << "Shortest Path from node 0: ";
for (const auto& distance : dijkstraDistances) {
if (distance != INF) { // 如果不是无穷大
std::cout << distance << " to node ";
} else {
std::cout << "(unreachable) ";
}
}
std::cout << std::endl;
return 0;
}
```
阅读全文