Главная » Просмотр файлов » Искусство программирования на Си

Искусство программирования на Си (984073), страница 50

Файл №984073 Искусство программирования на Си (Искусство программирования на Си) 50 страницаИскусство программирования на Си (984073) страница 502015-07-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 50)

Операции в динамической лете возврашаться к уже посещенной вершине, а алгопаги«и обычно выполняются за время порядка О([ой [ч) ритм Беллмана-Форда нс имеет такого предположения Рй 1и(Е(а1(ав(кй)< и снн.кают время выполнения алгоритмз Дийкстры ло Существует две примечательныс проблемы. Первая 1п1ейези1$а(ьйеаи1св, 5->вивувкетсев) г поря,<ка О(У [ой У). Однако резлизаш<я поиска в лво- заключается в том, чтоланный алгоритм занимаетбольичнол динамической памяти может занять много вре- шс времени, чем алгоритм Дийкстры.

В алгоритме Диййвви1са[5пиксв).тпеа1=0< /' йаг 1 '/ менн. и любыс выгоды, полученные от сс использова- кстры кажлая вершина обрабатывается только один раз. йвви1$в[воигсе!.Ргео(оио=-1; /* предидуивго узла ввт */ Органимцнн донн«о $ ° Часть И Райнта г гра«/«ннн 1 4 Глава 1б ствие в долларах. В этом контексте ребро с отрицатель- го определенного маршрута. Почти во всех других жиз- чество промежуточных вершин. Можно представить обшни способ хранения. Рис. 16.38 и табл. 16.13 дсмонными затратами будет там, где железнодорожная ком- пенных ситуациях, представляемых с помощью графов„ этот путь, составляя список последовательных вершин, стрируют результаты, презставленныс в наиболее доспания платит своим пассажирам за использование это- ребра с отрицательными затратами не возникают. Дис- ко)орый выглядит следующим образом: чн („, 1„)ь..

1„. тупном для понимания виде. тинг 16.5 демонстрирует алгоритм Беллмана-форда. чг Г)[ц,ч[ — это кразчайшии путь между двумя верши- Первая колонка таблицы — это список всех возможнами с[п,ч[ — это затраты прямого ребра от н к ч, рав- ных путей, которые могут существовать в рассматриваныс «атратам некоторого ребра, если ц и ч — смежныс смом графе. Слслуюшая колонка — это начальные знагпе Ве11вап(вггпсе сгарь * с, зп1 Бопгсе, вггпсг в))кекса тайье и таьуе) вершины, или равные бесконечности, когда н и ч нс чения затрат на этих путях, а кажлая последуюшая ( являются смежными.

колонка — затраты после обработки каждого значения В алюритме Диикстры для поиска кратчайшего пути К. Затразы, выделенные жирным шрифтом, — мини1пс вггпсг Рбпепе Я; Г)[п «[ между двумя вершинами рекурсивно применяется мальные затраты, рассчитанные для определенною знавсгпст О1)хвега Коы * Кевп1тв; пра)«нло: чения К, т.е. тскушие затраты пути ) — «] больше, чем всгпсс Вбдевсап Е) / ° содерввт ввйорыадав о ребре */ Г)[п,ч[=пип(0[п,«[, Г)[п,с[+с[(„,ч[) пути 1 -«К РК вЂ” «). РС 1п111а1]ве(ь0)) Другими словами, минимальные затраты от ц к ч— 1=1пзткевп1гв(ькевп11в, с->дпачегегсев]1 это )атраты на кратчайший найденный путь либо зат- "о кз /' сообдвть о любой оавбке */ 11 (з] геспгп 11 / раты на промежуточные вершины плюс ребра, соединя- 4 з Кевп11в(восгсе].Тоьа1 О) /* дат 1 */ юшис промежуточные вершины на пути к ч.

ПередвиКевп11в(вопгсе).ргет1опв -1) /* предыдущей вервввы вет */ гаясь по вершинам, используемым в качестве Ч Бопгсе; проис)ау)очных, можно подсчитать кратчайший путь ко всем вершинам. Это то, что делает атгоритм Дийкстры Органи<аиинданних 6Ш- ' 1! Часть !! Работа г гра4а и и Глава !б ЫЙИ рый использует промежуточную всршину, короче, чсм Алгоритм Флойда дает корректные результаты и лля Листинг 16.6.

Алгоритм Флойда. текущий. В нашем примере определяется, что путь графов с ребрами. имеющими отрицательные затраты. глг Р)оуб(вггпсе Сгарь ° С,еегпсг Р1оуб Рабус ° Рабус) г< --э н< коРо <е, чем полУченный пРи испольювании ча Если встРсчаютсЯ циклы с отРицательными затРатами, /* Алгорвтм Епойда нСПолЬЗУется в целЯх поДсчета хратчайаего марврута длЯ всех пар веРваа. в качестве промежуточной вершины Другими слова- алгоритм нс будет работать бесконе <но, но полученные В СЛУЧаЕ УСПЕХа ВОЗВРадевтел О, Впа ЗнаЧЕаВЕ <Ог Еепа ПРОВЗОапе ОВВВКа (СВАРН ОСТОРИАВ, ми, путь и, -э ни-э и<длиннсс, <ем кратчайший путь результаты нсбудучдостоверными. Эж<состояние мож- СНАРН ВАПРАНАИ). Срв передаче графа, содервадего цнхл с отрвцательввмв затратами, получаются флктнвнве результата, а не результат оввбхв в сегмеатацвв, в аачальвнх цакпах в т.п.

и, -э х и определенный ранес. но опрслелить, изучив пути от каждой вершины назад Во время следующей итерации, когда Кт(, выпол- к ней самой. Если обнаружится отрицательный цикл, ( няется та же сал<ая операция. Однако на этот раз полу- то затраты пути назал к вершине после окончания ра- злг г,),1<; чаетсЯ, что пУти чн -э г< -+ н< и ч, — г и, — и и< коРоче, чел< боты алгойитма бУдУт иметь отРицательное значение. определенные ранее пути иа — ! и, и хй — э и,соответствен- Обычно расстояние от любой вершины обратно к ней как мвавмум О(1,11 в марврута через хавдуп промевуточеув веравну К, т.е. вспользуется правило но. После того как использованы все значения )<, окон- самой равно 0 чатсльными значениями являются ллины кратчайших Итак, для выполнения алгоритл<а Флойла требуется путей.

В листинге 16.6 реализован алгоритл< Флойда. 1Р итерадии, как и при выполнении алгоритма Дийкстнггис1 Р1оуд Вевп11 *' В; Можно также опрсдслить факп<ческии путь, а не ры для каждой вершины. Различие состоит во времени зсгисе ВбчеВсап ВЯсап; только его длину мсзкзу любой парой вершин. Это не- которос требустся для выполнения каждой итерации 11 (<С (( <табуе )( !Сг>впвчегтгсеа) гегпгп СВАРа ВАПРАВАИ; намного сложнее, чем алгоритм Дийксзры. Требуемая Реализация алгоритма Флойда имеет очень плотнып информация — это значение й, являющееся кратчай- внутренний цикл.

Хорошо оптимизирующий компиля- /* Создать двумервма масона результатов '/ шим путем. Отсюда можно разделить каждый путь на тор сделает из него исключительно быстро еыполнясд= нведеап11в(С- 'сев); 11 (<д) геепгп СВАРВ ОСРОРИВИ; два, причем первый заканчивасгся и второй начинает- мый кол.

Реализации алгоритма Дийкстры обычно имс. Организация данных ЩЩ ЧастЫ! райан ~а г графами бер в графе. Способ, по которому реализуется очередь, занимает очень много времени. Олин подход решения этой проблемы состоит'в использовании двоичной динамической памяти — отчасти сложной, но эффективной структуры данных. Время, за которое приоритетные очереди обычно выполняют одну операцию постановки в очередь с использованием двоичной динамической памяти в качестве базовой структуры данных, имеет порядок О()оя )Ч), т.е. полное время на построение приоритетнои очереди ребер имеет порядок О(Е !оя Е). Π— 'З О О г Глава 16 зованисм двоичной пирамиды (см.

главу 11) будет ра- 2 Часть реализации этого алгоритма, занимающая са- !гз ггз боз ать с менее зачетно возросшей скоростью. мое большое количество времени на вычисления, — это Теоретически существует технология, основанная на 3 6 с~~особ, которым выбираются ребра. Графы обычно хравдгоритме Флойда, которую лучше всего использовать нятся таким образом, что трудно создать список ребер для болыпил разреженных графов.

Этот алгоритм проа 2 4 лля всего графа. Оба представленных способа страдают всряет каждую возможную промежуточную вершину от этой проблемы, однако они имеют преимушества с лля кажлои пары вершин в графе. Для разреженных з других точек зрения. графов количество определенных путей между парами Хорошим решением бьшо бы созлание приоритетной сравнимо с количеством возможных пар.

очерели ребер. Операция вывода из очереди автомати- Во время выполнения алгоритма Флойда на бумаге чески дает ребро с наименьшими затратами, которое нс становится ясно, что необхолимо работать только с из- было изучено. После этого действия 3 — 5 выполняются всстными вершинами. Просто если ребро Х вЂ” з ч„неиз! самое большее за Е итераций, где Š— количество рсвестно (имеет бесконечныс затраты), то любои путь от ч, -з г, — з и будет бесконечен без возможности какихлибо улучшений. Эти же рассуждения можно приме- 6 6 Оз) Оз нить ко второй части пути чз — з чг Идею известных путей можно использовать для уменьшения количества необходимых итераций. Слож- г но, он будет работать медленнее, чем при нормальной Глава !б Орган»гани» даыш» — Ра саги а с граФы ии Масть И РЕ0 1п111а11пе(0)! ппваббед++! Тгее=иакеогарь[ь)ег)! ) 11 (!Тгее) гегегп 6ДЬРН ООТОРНен! ) /* Вага 1 и 2: располопенпе ребер в графе по затратам, а такве дублвровавве вернее графа С в 'Тгеерег=угее! Тгее (только потому, что быстрее работает один цпкл, выполвявдва две задачи, чем два цнкла, РЕО Ргее(0); выповаявцве одну задачу */ гегпгп О! ) Рог (1=0!1»6->Нпвуег11сее!1»+) ( )иаддчеггех(Тгее)! Алгоритм Прима Таблица 16.16.

Алгоритм Прима — стадия 2. гу (1<0) г„ Посещенные Загмраагы Прес)ыг))тшая ( А.лориты Прима (Рпп!) создает минимальное остоннос аергаимы ребра вершина / Оввбка. Очвстпть в возвратнться / дерево путем добавления слинстнснного ребра (а также РЕ0 Ргее(0); РгеебгарЬ[Тгее); не[алин) в дсрсно после определенного количсстна итс- да нет гегпгп рлпнй. Вершины н графе разделяются на дна наборе: "и ) один, янляющиися частью дсрсва, а другой — нет. Во иы Тгее->Чегггсеп[1]->ТаЧ=С->Чегг1сез[1]->Тау! нрсчя кахсдой итерации ребро с минимальными затратами связынаст любую вершину, янляюшуюся частьн! 4 нет 7 нет ебченсапнсагг(6,),аезсап)! 5 нет и, решения, с любой вершиной, которая сшс нс добанлсыЬ11е ([ЕСЧеясапвех1(ькдсап)) Работа с гродгиии Глава 1б Таблица 16.19.

Характеристики

Тип файла
DJVU-файл
Размер
12,26 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее