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

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

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 22:28   #1
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию Графы. Хранение хранить список смежностей как хеш-таблицу. Чем не идеал?

По-моему это идеальный вариант. Такой способ позволяет как за О(1) узнать смежны ли вершины, так и получить список всех смежных вершин. То-есть объединяет возможности матрицы и списка смежностей.
Но в Кормене вопрос поставлен с явным намёком на минусы...
Kn793 вне форума Ответить с цитированием
Старый 08.11.2010, 07:07   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Когда я баловался графами, то вообще не хранил таблицу смежности. То есть это можно и так назвать, но в общем-то это была не таблица смежности. Граф я организовывал так как удобно его использовать человеку (а не машине). Каждая точка графа имела координаты (для отображения на канвасе (так на всякий пожарный)), список точек, с которыми она соединена и веса соединений (просто в виде числа). То есть граф был представлен, так как его обычно представляют люди. Никаких проблем в работе не было (а именно реализовывал алгоритм Дейкстры). Надеюсь чем-нибудь помог.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.11.2010, 10:23   #3
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию

Так ведь это и есть список смежностей
Kn793 вне форума Ответить с цитированием
Старый 08.11.2010, 10:46   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не совсем. Я писал в противовес в этому http://ru.wikipedia.org/wiki/%D0%9C%...81%D1%82%D0%B8
И кстати, никаких проблем с определением смежности вершин...
Да и еще вопрос, а какие минусы там были:
Цитата:
Но в Кормене вопрос поставлен с явным намёком на минусы...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.11.2010, 15:56   #5
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
По умолчанию

Код:
И кстати, никаких проблем с определением смежности вершин...
Никаких проблем это значит для определения вы пробегались по всему списку и искали нужную вершину?

Код:
Да и еще вопрос, а какие минусы там были:
Это упражнение. Заключается в нахождении этих минусов .
Kn793 вне форума Ответить с цитированием
Старый 08.11.2010, 16:00   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Зачем ее искать? Они уже все найдены .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.11.2010, 17:42   #7
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Цитата:
Сообщение от Kn793 Посмотреть сообщение
По-моему это идеальный вариант. Такой способ позволяет как за О(1) узнать смежны ли вершины, так и получить список всех смежных вершин. То-есть объединяет возможности матрицы и списка смежностей.
Но в Кормене вопрос поставлен с явным намёком на минусы...
На первый взгляд:
1) требуется больше памяти, нежели при списках;
2) элементы в списке смежности нельзя хранить отсортированными по какому-либо критерию;
3) доступ к элементам выполняется медленнее по сравнению с матрицей смежности (варьируется от O(1) до O(N) в зависимости от реализации хеш-таблиц и коэффициентов их заполнения).
still_alive вне форума Ответить с цитированием
Старый 08.11.2010, 17:55   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от Kn793 Посмотреть сообщение
По-моему это идеальный вариант.
Идеальный для чего?
Цитата:
Сообщение от Kn793 Посмотреть сообщение
Такой способ позволяет как за О(1) узнать смежны ли вершины, так и получить список всех смежных вершин.
О(1) - это идеальный случай при отсутствии коллизий. Вопрос в реализации хеш-функции, размере таблицы, её заполнении,...
Цитата:
Сообщение от Kn793 Посмотреть сообщение
То-есть объединяет возможности матрицы и списка смежностей.
т.е. наследует и плюсы и минусы. Для каких-то задач будет лучше массивов и списков, для каких-то будет серьезно проигрывать. Вопрос в правильном использовании.
Цитата:
Сообщение от Kn793 Посмотреть сообщение
Но в Кормене вопрос поставлен с явным намёком на минусы...
Кто есть Кормен?
Итог: способ не идеальный. Может быть лучше для определенных задач, но не для всех и не всегда. Всё зависит от целей и доступных возможностей.
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как лучше хранить денежные величины в FireBird Lokos БД в Delphi 8 08.02.2012 03:36
при подсчете хеш-суммы ошибка Integer Overflow. как обойти? Человек_Борща Общие вопросы Delphi 2 09.02.2011 11:20
как и где хранить изображения? kate158 БД в Delphi 9 20.08.2010 16:37
Как лучше хранить фото в базе? GenniY Свободное общение 0 19.07.2010 10:35
Как правильнее хранить настройки программы на хосте? Kottik Работа с сетью в Delphi 9 07.10.2009 14:06