program ini katanya mencari jalur terpendek di antara beberapa array yang sudah kita beri nilai sendiri atau static
nah langsung aja ke tkp banyak omong yang ada malah ngelantur
#include#include #define V 9 using namespace std; int minDistance(int dist[], bool sptSet[]) { int min = INT_MAX, min_index; for (int v = 0; v < V; v++) if (sptSet[v] == false && dist[v] <= min) min = dist[v], min_index = v; return min_index; } int printSolution(int dist[], int n) { printf("Vertex Distance from Source\n"); for (int i = 0; i < V; i++) printf("%d \t\t %d\n", i, dist[i]); } void dijkstra(int graph[V][V], int src) { int dist[V]; bool sptSet[V]; for (int i = 0; i < V; i++) dist[i] = INT_MAX, sptSet[i] = false; dist[src] = 0; for (int count = 0; count < V-1; count++) { int u = minDistance(dist, sptSet); sptSet[u] = true; for (int v = 0; v < V; v++) if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u]+graph[u][v] < dist[v]) dist[v] = dist[u] + graph[u][v]; } printSolution(dist, V); } int main() { int graph[V][V] = {{0, 4, 0, 0, 0, 0, 0, 8, 0}, {4, 0, 8, 0, 0, 0, 0, 11, 0}, {0, 8, 0, 7, 0, 4, 0, 0, 2}, {0, 0, 7, 0, 9, 14, 0, 0, 0}, {0, 0, 0, 9, 0, 10, 0, 0, 0}, {0, 0, 4, 0, 10, 0, 2, 0, 0}, {0, 0, 0, 14, 0, 2, 0, 1, 6}, {8, 11, 0, 0, 0, 0, 1, 0, 7}, {0, 0, 2, 0, 0, 0, 6, 7, 0} }; dijkstra(graph, 0); return 0; }
nah sedikit ane jelasin dari program di atas yaitu pada graph[V][V] yang artinya array graph[9][9] kenapa 9 karena kita udah menentukan bahwa nilai v adalah 9 dari define V 9 pada baris ke lima kalo gak salah hehehe
nah cara baca array tersebut adalah pertama dari array 0
0=0 titik awal trus titik 2=4 titik 3=0 karena dari titik 0 ke titik 3 tali nya tidak terhubung dan begitu seterus nya sampai titik 7=8 karena garis nya terhubung makanya di beri nilai 8 dan selain itu 0
begitu seterusnya dari array1 hingga 9
void dijkstra(int graph[V][V], int src) yaitu menentukan jalan terpendek dari beberapa garis atau jalan
int printSolution(int dist[], int n) yaitu untuk menampilkan data dalam satu array yang sudah di bentuk dari void dijkstra(int graph[V][V], int src)
untuk gambar nya bisa di lihat pada link di bawah ini
sumber : http://www.geeksforgeeks.org/greedy-algorithms-set-6-dijkstras-shortest-path-algorithm/
0 comments:
Post a Comment