Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Глава 17. Свойства и типы графов. тур данных с многочисленными неравноценными компонентами и в самом деле представ­ляет собой трудную задачу.








тур данных с многочисленными неравноценными компонентами и в самом деле представ­ляет собой трудную задачу.

Мы можем также рассмотреть и альтернативные реализации, которые выполняют мо­дификацию базовых структур данных в процессе настройки рабочих характеристик с це­лью экономии пространства памяти или времени выполнения при обработке крупных гра­фов (или большого числа графов небольших размеров). Например, мы можем существенно повысить производительность алгоритмов, выполняющих обработку крупных статических графов, представленных списками смежных вершин, отказавшись от пред­ставления множества вершин, инцидентных каждой конкретной вершине, в виде связных списков и воспользовавшись их представлением в виде векторов переменной длины. Пользуясь такой технологией, мы можем в конечном итоге представить граф всего лишь целыми числами, что меньше V, и V целыми числами, что меньше V2 (см. упражне­ния 17.52 и 17.54). Подобные представления особенно привлекательны в условиях обра­ботки крупных статических графов.

Алгоритмы, которые мы рассматриваем, легко приспосабливаются ко всем изменени­ям, предложенным нами в этом разделе, поскольку в их основу положены несколько высокоуровневых операций, таких как " выполнить следующую операцию на каждом ребре, связанном с вершиной v", которые поддерживаются построенным базовым АТД.

В некоторых случаях наши решения относительно структуры алгоритма зависят от некоторых свойств конкретного представления графа. Работа на высоком уровне может отодвинуть на задний план наше осознание этой зависимости. Если мы знаем, что одно представление ведет к снижению производительности алгоритма, а другое нет, мы берем на себя неоправданный риск, если будем планировать применение алгоритма на непра­вильно выбранном уровне абстракции. Как обычно, наша цель состоит в том, чтобы по­строить такие реализации, которые позволяли бы давать точную оценку производитель­ности алгоритма. По этой причине мы сохраняем отдельные типы DenseGRAPH (насыщенный граф) и SparseMultiGRAPH (разреженный мультиграф) для представления графа, соответственно, в виде матрицы смежности и в виде списка смежных вершин с тем, чтобы клиенты могли воспользоваться той из реализаций, которая лучше подходит для решения стоящей перед ними задачи.

В худшем случае простой алгоритм выбора пути, описанный в разделе 17.7, (а также несколько других методов, которые мы будем изучать в граве 18) исследует все Е ребер графа. Вхождения в среднем и правом столбцах нижней строки таблицы 17.1 показыва­ют, соответственно, что этот алгоритм может проверить все V1 вхождений представления графа в виде матрицы смежности и все V заголовков списков и все Е узлов в списках в представлении графа в виде списков смежных вершин. Из этого следует, что время сче­та алгоритма линейно зависит от размера представления графа, в то же время имеются два исключения из этого правила: в худшем случае линейная зависимость времени счета от числа ребер графа нарушается, если мы используем матрицу смежности для представле­ния разреженного графа или для представления очень разреженного графа (граф, кото­рый содержит большое число изолированных вершин). Чтобы больше не останавливать­ся на этих исключениях, в дальнейшем мы полагаем, что размер представления графа, которое мы используем, пропорционален числу ребер этого графа. В большинстве практических при­ложений эта гипотеза подлежит дальнейшим исследованиям, поскольку они производят



Часть 5. Алгоритмы на графах


обработку крупных разреженных графов и, следовательно, отдают предпочтение пред­ставлению графа в виде списков смежных вершин.

Значение в нижней строке левого столбца таблицы 17.1 получено по результатам при­менения алгоритмов объединения-поиска, описанного в главе 1 (см. упражнение 17.15). Этот метод привлекателен тем, что требует пространство памяти, всего лишь пропорци­ональное числу вершин V графа, однако его недостаток заключается в том, что он не спо­собен показывать пути. Это вхождение в таблицу 17.1 подчеркивает важность полного и точного описания задач обработки графов.

Даже после того, как все эти факторы будут учтены, одной из наиболее важных и труд­ных проблем, с которыми нам приходится сталкиваться при разработке практических ал­горитмов обработки графов, является оценка того, насколько рабочие характеристики этих алгоритмов, полученные для худших случаев наподобие представленных в таблице 17.1, переоценивают потребности во времени и в пространстве памяти обработки графов, которые встречаются на практике. Большая часть публикаций по алгоритмам на графах описывает рабочие характеристики в переводе на показатели, которые гарантируются в худшем случае, и в то время как эта информация полезна при выявлении алгоритмов, которые могут обладать заведомо неприемлемыми характеристиками, она может оказать­ся не в состоянии пролить свет на то, какая из нескольких простых программ является наиболее подходящей для заданного применения. Эта ситуация усугубляется трудностями разработки полезных рабочих моделей алгоритмов на графах для обычных условий рабо­ты; все что нам остается (возможно, это ненадежный метод) — это проверка в конт­рольных точках и (возможно, это чрезмерно консервативный метод) характеристик, га­рантированных в худшем случае, на которые мы можем опираться на практике. Например, все методы поиска на графах, которые рассматриваются в главе 18, представ­ляют собой эффективные алгоритмы, подчиняющиеся линейной зависимости и предназ­наченные для поиска пути между двумя заданными вершинами, однако их рабочие харак­теристики существенно различаются в зависимости от того, какой граф подвергается обработке и как он представлен. При использовании алгоритмов обработки графов на практике мы ведем постоянную борьбу с таким несоответствием гарантированных рабо­чих характеристик в худшем случае, которые мы можем доказать, и фактических рабо­чих характеристик, которые мы имеем основания ожидать. С этой темой мы будем пе­риодически соприкасаться на протяжении всей этой книги.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.