Solusi brute force
unknown
c_cpp
2 years ago
1.8 kB
5
Indexable
#include <iostream>
#include <vector>
#include <limits>
using namespace std;
const int INF = numeric_limits<int>::max();
// Fungsi untuk mencari rute terpendek antara dua titik dalam graf berbobot dengan pendekatan brute force
void bruteForceShortestPath(vector<vector<int>>& graph, int source, int destination, int current, int cost, int& minCost) {
int n = graph.size(); // Jumlah titik dalam graf
// Basis: Jika titik saat ini adalah tujuan, perbarui jarak terpendek jika lebih kecil
if (current == destination) {
minCost = min(minCost, cost);
return;
}
// Rekursi: Coba semua kemungkinan rute dari titik saat ini
for (int i = 0; i < n; i++) {
// Cek apakah ada sisi yang menghubungkan titik saat ini dengan titik i
if (graph[current][i] != 0) {
// Lanjutkan ke titik i jika belum dikunjungi
if (i != source) {
bruteForceShortestPath(graph, source, destination, i, cost + graph[current][i], minCost);
}
}
}
}
int main() {
// Contoh penggunaan
int n = 5; // Jumlah titik dalam graf
vector<vector<int>> graph = {
{0, 2, 0, 1, 0},
{2, 0, 4, 0, 5},
{0, 4, 0, 3, 0},
{1, 0, 3, 0, 6},
{0, 5, 0, 6, 0}
};
int source = 0; // Titik awal
int destination = 4; // Titik tujuan
int minCost = INF; // Inisialisasi jarak terpendek dengan nilai maksimum
bruteForceShortestPath(graph, source, destination, source, 0, minCost);
// Cetak jarak terpendek dari titik awal ke titik tujuan
cout << "Jarak terpendek dari titik " << source << " ke titik " << destination << " adalah: " << minCost << endl;
return 0;
}
Editor is loading...