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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2008, 11:28   #1
Agnazar
 
Регистрация: 25.05.2008
Сообщений: 3
По умолчанию Поиск разделяющих вершин в произвольном графе...

В общем, задача звучит следующим образом:
Найти все разделяющие вершины в произвольном графе...

В некоторой литературе в инете нашел их(разделяющие вершины то есть) как точки связности.
Примечание: Вершина - разделяющая, если при удалении ее граф становится насвязным.

Помогите пожалуйста хотя бы с общим описанием концепции =)
Писать буду под Delphi. Хотя если кто-то что-то на Basic/C++ покажет тоже пойму.
Спасибо!
Agnazar вне форума Ответить с цитированием
Старый 25.05.2008, 13:48   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Agnazar Посмотреть сообщение
В общем, задача звучит следующим образом:
Найти все разделяющие вершины в произвольном графе...

В некоторой литературе в инете нашел их(разделяющие вершины то есть) как точки связности.
Примечание: Вершина - разделяющая, если при удалении ее граф становится насвязным.

Помогите пожалуйста хотя бы с общим описанием концепции =)
...
Нужно реализовать функцию для проверки графа на связность.
Начинаем с любой вершины. Включаем в список вершины, которые с ней
связаны и которых еще нет в списке. Для этих вершин рекурсивно
делаем то-же самое. Если после выполнения в списке окажутся все
вершины графа, то граф связан.

Теперь для всех вершин делаем следующее:
удаляем ее из графа. Если граф стал несвязанным, то это наша вершина.
Восстанавливаем граф и переходим к следующей вершине.
alexBlack вне форума Ответить с цитированием
Старый 25.05.2008, 14:59   #3
Agnazar
 
Регистрация: 25.05.2008
Сообщений: 3
По умолчанию

1. Простите за дурацкие вопросы, но как их помечать? (добавлять в список)
2. Как сформировать подходящий для этой задачи граф? Чтобы таких точек было немного...

Просто с графами как-то не приходилось работать и литературы подходящей не узрел...
Agnazar вне форума Ответить с цитированием
Старый 25.05.2008, 15:42   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Agnazar Посмотреть сообщение
2. Как сформировать подходящий для этой задачи граф? Чтобы таких точек было немного...

Просто с графами как-то не приходилось работать и литературы подходящей не узрел...
Если ограничить количество связей, то для их описания можно иcпользовать обычный массив. Например, такое представление вершины графа:

Код:
type
    PNode = ^TNode;
    TNode = record 
        P : boolean;
        Link : array [1..10] of PLink;   // Связи с другими вершинами 
    end;
    
    //  Сами вершины можно хранить в массиве
var Graf : array [1..10] of PNode;
Цитата:
... как их помечать? (добавлять в список)
Можно обойтись без списка. Поле P в вершине графа будет меткой.
Дальше действуем примерно так:

Код:
//сначала очищаем все метки
for i:=1 to countNode do Graf[i]^.P := false;

// Маркируем вершины, связанные с первой:
_markSv(Graf[1]);
// Проверяем метки у всех вершин
// Если есть хотя-бы одна не помеченная, значит граф не связанный

//Функция для проверки связанности:
procedure _markSv(P:PNode);
begin
    P.P := true;   // помечаем саму вершину 
    // Рекурсивно проходим по всем связанным вершинам
    for i:=1 to 10 do begin
       P1 := P.Link[i];
       if not P1.P then _markSv(P1);
    end;
end;
alexBlack вне форума Ответить с цитированием
Старый 29.05.2008, 22:51   #5
Agnazar
 
Регистрация: 25.05.2008
Сообщений: 3
По умолчанию

спасибо большое
Agnazar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск Эйлерова цикла в графе Danion Помощь студентам 3 22.05.2010 18:47
Построить треугольник по координатам его вершин и описать около него окружность. Lion Помощь студентам 22 01.04.2008 23:37
Паскаль. Сравнение на подобность треугольников. Координаты вершин в матрице. Jondeer Помощь студентам 3 07.11.2007 07:31
Поиск по FTP Averss PHP 4 04.09.2007 20:37
поиск Р - абсолютных центров в графе grinders Помощь студентам 1 14.01.2007 09:57