Re: отрезать вершины
- From
- Dmitry Onegov ()
- To
- Alexander Shmidt
- Date
- 2002-10-07T18:42:55Z
- Area
- RU.ALGORITHMS
From: "Dmitry Onegov" <Dmitry.Onegov@psu.ru>
Добрый день.
--
"Alexander Shmidt" <Alexander.Shmidt@p74.f34.n464.z2.fidonet.org> wrote in
message news:1033747771@p74.f34.n464.z2.FIDOnet.ftn...
[skipped]
> Есть задачка:
> Граф, в котором надо удалить как можно меньшее количество вершин так,
> чтобы
> оставшиеся вершины никак не были связаны (фактически получается, что
> никаких
> ребер не должно остаться).
[skipped]
imho, должно работать что-то типа (может быть и не всегда, но контр-пример в
голову не приходит):
while (<в графе есть ребра>) {
<берем одну из вершин с максимальным кол-вом ребер>;
<удаляем её (вместе с ребрами)>;
};
> *Адвенсед-версия: вершины имеют вес; задача - удалить вершины так, чтобы
> суммарный вес оставшихся был максимален.
:-) можно решить "в лоб" (если время выполнения не критично). можно
попытаться привести к 1-й задачке (если это вообще возможно).
что первое пришло на ум: добавим в вершину помимо массы ещё одно свойство -
bm (суммарный вес соседей).
что-то типа:
Веса вершин: Суммарные веса соседей:
1---2 5---4
\ / \ /
3 3
<подсчитываем bm вершин>;
while (<в графе есть вершины с bm>0 >) {
<берем одну из вершин с максимальным bm>;
<удаляем её>;
<пересчитываем bm вершин>;
};
останется только одна вершина с массой 3.
p.s. к сожалению нет возможности проверить правильность работы алгоритмов.
--
С уважением, Онегов Дмитрий.
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
--- ifmail v.2.15dev5
* Origin: Talk.Mail.Ru (2:5020/400)