Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2009, 21:50   #1
Пaвeл
Пользователь
 
Аватар для Пaвeл
 
Регистрация: 08.11.2008
Сообщений: 47
Вопрос DFS.

Какая сложность алгоритма, который проверяет связность графа.
Вот мой алгоритм:

Procedure DFS(v:longint);
var i:longint;
begin
b[v]:=1;
for i:=1 to n do
if a[v,i]=1 then if b[i]=0 then DFS(i);
end;

...

DFS(1);
for i:=1 to n do
if b[i]=1 then begin
writeln('Граф не связан');
readln;
halt(0);
end;
writeln('Граф связан');

...

B[i]=1, если из вершины 1 можно добраться до вершины i

А какая будет сложность, если вместо матрицы смежности использовать список ребер?
Я не знаю, как должно быть, но вы делаете всё не правильно ©
Пaвeл вне форума Ответить с цитированием
Старый 24.04.2009, 22:22   #2
L_M
Форумчанин Подтвердите свой е-майл
 
Регистрация: 25.02.2008
Сообщений: 289
По умолчанию

Если я не ошибаюсь, то кольчество вершин + количество ребер(он должен пройти по всем вершинам и для каждой проверять ребра на смежность - строка матрицы). Если использовать список ребер, то по идее должна зависеть от насыщенности графа( ну сколько там ребер ), т.к. по метрице идет поиск по строке - не более n, а в списке ребер надо искать по всем ребрам(если их меньше n, то быстрее, если больше, то медленнее), хотя если отсортировать можно ускорить. Но тогда проще использовать списки смежных вершин, то есть массив в котором для каждой вершины написаны вершины, с которыми она смежна(лучше это на списках).
PS мне кажется лучше в DFS не помечать пройденные вершины, а удалять ребра и если граф не ориентирован, то искать только в части таблицы(т.к она сиимметрична)
for i:=v to n do
if a[v,i]=1 then begin
a[v,i]=0;
DFS(i);
end;
Упс...
L_M вне форума Ответить с цитированием
Старый 25.04.2009, 09:19   #3
Пaвeл
Пользователь
 
Аватар для Пaвeл
 
Регистрация: 08.11.2008
Сообщений: 47
По умолчанию

Большое спасибо!
Я не знаю, как должно быть, но вы делаете всё не правильно ©
Пaвeл вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DFS. Пaвeл Помощь студентам 1 19.04.2009 15:59