Кто-нибудь подскажиет как решить данную задачку на Delphi. С графами вообще не знаком, а решить надо очень срочно!!
Задача из раздела : Алгоритм с возвратом
Определить является ли связанным заданный граф. Указание: использовать рекурсивную процедуру проверки доступности одной вершины из другой.
Если нет возможности дать готовое решение, то хоть посоветуйте где почитать про это.
[Ответ]
Поиск в глубину
Идея метода. Поиск начинается с некоторой фиксированной вершины v. Рассматривается вершина u, смежная с v. Она выбирается. Процесс повторяется с вершиной u. Если на очередном шаге мы работаем с вершиной q и нет вершин, смежных с q и не рассмотренных ранее (новых), то возвращаемся из вершины q к вершине, которая была до нее. В том случае, когда это вершина v, процесс просмотра закончен. Очевидно, что для фиксации признака, просмотрена вершина графа или нет, требуется структура данных типа:
Nnew : array[1..N] of boolean.
Пример. Пусть граф описан матрицей смежности A. Поиск начинается с первой вершины. На левом рисунке приведен исходный граф, а на правом рисунке у вершин в скобках указана та очередность, в которой вершины графа просматривались в процессе поиска в глубину.
Логика.
procedure Pg(v:integer);{Массивы Nnew и A глобальные}
var j:integer;
begin
Nnew[v]:=false; write(v:3);
for j:=1 to N do if (A[v,j]<>0) and Nnew[j] then Pg(j);
end;
Фрагмент основной логики.
...
FillChar(Nnew,SizeOf(Nnew),true);
for i:=1 to N do if Nnew[i] then Pg(i);
...
из книжки Окулова - алгоритм просмотра всех вершин. Вроде все ясно- те которые "просмотрелись" те связаны, другие - нет.
[Ответ]