Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » » Программирование
Философия, технологии, алгоритмы!

Ответ
 
Опции темы
Старый 16.04.2008, 17:11   #1   
Форумец
 
Сообщений: 275
Регистрация: 29.07.2006

ac!d вне форума Не в сети
Определение минимального покрытия графа

Кто-нибудь может написать или кинуть на почту алгоритм сего задания? Просмотрел кучу учебников по ДМ, ничерта не нашёл, определение самого покрытия есть, а алгоритма нету.
  Ответить с цитированием
Старый 16.04.2008, 17:50   #2   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,149
Регистрация: 18.09.2006
Возраст: 40

xxx-men вне форума Не в сети
что есть "минимальное покрытие"? определение в студию=)
может что нибуть и найду.....
  Ответить с цитированием
Старый 16.04.2008, 18:24   #3   
Форумец
 
Сообщений: 275
Регистрация: 29.07.2006

ac!d вне форума Не в сети
"Будем говорить, что ребро и вершина покрывают друг друга, если они инцедентны. Множество вершин, покрывающее все рёбра графа, называется вершинным покрытием графа, а множество рёбер, покрывающих все вершины, называется рёберным покрытием графа. Наименьшее число вершин в вершинных покрытиях графа называется его числом вершинного покрытия.(А0) Аналогично наименьшее число рёбер в рёберных покрытиях графа наывается числом рёберного покрытия.(А1) Вершинное(рёберное) покрытие называется наименьшим, если оно содержит А0(соответственно А1) элементов."
Из учебника Ф.Харари: "Теория графов"
  Ответить с цитированием
Старый 17.04.2008, 09:41   #4   
Форумец
 
Аватар для xxx-men
 
Сообщений: 1,149
Регистрация: 18.09.2006
Возраст: 40

xxx-men вне форума Не в сети
тебе надо вершинное или реберное покрытие найти?
чем\как задан граф..?


граф ориентированный?
граф с петлями?

если нет, простейший случай:
Цитата:
Матрица инцидентности G имеет n строк и m столбцов, а ее элемент G(i,j) равен 1, если вершина с номером i инцидентна ребру с номером j , в противном случае он равен нулю.
попробую минимальное вершинное покрытие:
const int n=количество_вершин;
const int m=количество_ребер;
bool G[n][m+1]; // +дополнительная строчка

//функция, найти число связей у вершины
int find(int x,)
{
int result=0;
for(int i =0; i<m; i++)
___if(G[x][i]) result++;
};

//функция, найти вершину с максимальным числом связей
int find_max()
{
int result =0;
for(int i =0; i<n; i++)
___if( find(i)>find(result ) ) result = i;//оптимизаторы нервно курят....
};

//функция добавить вершину в "список минимального покрытия"
void add(int x)
{
G[x][m+1]=true;
for(int i=0;i<m;i++)
{
if(G[x][i])
___for(j=0;j<n;j++)
______G[j][i]=false;
};
};

//main
int main()
{
/*тут заполняеца этот массив*/
/*дополнительная строчка забиваеца нулями*/

while( find( find_max()) )
___add(find_max());

/*
дополнительная строчка должна являца минимальным вершинным покрытием
правда от графа остануца только нолики, но это решаемо
*/
};

все написаное выше полная отсебятина, ни где не тестировалась, и вполне может неработать
  Ответить с цитированием
Старый 18.04.2008, 19:06   #5   
Форумец
 
Сообщений: 275
Регистрация: 29.07.2006

ac!d вне форума Не в сети
Всё, спасибки, прога уже найдена. Если что, могу скинуть на почту, если интересуешься
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind