Я пытаюсь реализовать алгоритм в c, который находит MST с использованием DFS. Я уже нашел DFS algortihm, и я понимаю это довольно хорошо. Я также знаю, что я должен выполнить следующие шаги для достижения своей цели:найти минимальное остовное дерево с использованием глубины первого поиска в C
1 Запустите DFS, пока не найдете, что ребро назад или DFS остановлено. Если остановили возвращение Г.
2 На окружности, построенного в обратном перепаду найти самый тяжелый край и удалить его из G.
3 Возврат к 1.
Вот код ДФС:
#include<stdio.h>
void DFS(int);
int G[10][10],visited[10],n; //n is no of vertices and graph is sorted in array G[10][10]
void main()
{
int i,j;
printf("Enter number of vertices:");
scanf("%d",&n);
//read the adjecency matrix
printf("\nEnter adjecency matrix of the graph:");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
fscanf("%d",&G[i][j]);
//visited is initialized to zero
for(i=0;i<n;i++)
visited[i]=0;
DFS(0);
}
void DFS(int i)
{
int j;
printf("\n%d",i);
visited[i]=1; // éviter cycle
for(j=0;j<n;j++)
if(!visited[j]&&G[i][j]==1)
DFS(j);
}
Мне нужна ваша помощь для реализации полного алгоритма или, по крайней мере, некоторых советов. Это было бы очень признательно. Заранее спасибо.
вы можете сделать это легко, если используете BFS ... Вы пытались MST с BFS? –
Нет, еще не пробовал. У вас есть какой-то путь, за которым я могу следить, чтобы узнать об этом? – codeless
Связаны ли края между узлами? –