Главная » Просмотр файлов » Д. Кнут - Искусство программирования том 1

Д. Кнут - Искусство программирования том 1 (1119450), страница 101

Файл №1119450 Д. Кнут - Искусство программирования том 1 (Д. Кнут - Искусство программирования том 1) 101 страницаД. Кнут - Искусство программирования том 1 (1119450) страница 1012019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Циклом называется простой путь длиной, большей или равной трем, от некоторой вершины к ней самой. Рис. 29. Граф. Рис. 30. Свободное дерево. Эти определения проиллюстрированы на рис. 29, на котором изображен связный граф с пятью вершинами и шестью ребрами. Вершина С является смежной с А, ио оиа не смежная с вершиной В. От вершины В к вершине С есть два пути длиной два: (В,А,С) и (В,Р,С). В этом графе имеется несколько циклов, например (В, Р, Е, В). Свободное дерево (угее !гес), или дерево без корня (рис. 30), определяется как связный граф без циклов. Это определение применимо как для бесконечных графов, так и для конечных, хотя в компьютерных приложениях обычно используются только конечные деревья.

Можно привести несколько эквивалентных способов определения свободного дерева, например некоторые из пих представлены в следующей хорошо известной теореме. Теорема А. Если С вЂ” граф, то для него буаут эквивалентными следующие утверждения. а) С вЂ” свободное дерево. Ь) С вЂ” связный граф, который при удалении произвольного ребра пересэает быть связным. с) Если Г и à — различные пер~инны графа С, то существует единственный простой путь от вершины 1" к вершине Г( Более того, если граф С конечен и содержит в точности и > 0 вершин, следующие утверждения также будут эквивалентны утверждениям (а) -(с). о) С не содержит циклов п имеет и — 1 ребер. е) С вЂ” связный граф, который имеет и — 1 ребер.

Доказатсльсшво. Из (а) следует (Ь), так как при удалении ребра à — Г', при котором граф С остается связным, должен существовать простой путь (1', Ры..., 1") длины два или более (см. упр. 2), а тогда (Г 1 ы..., 1', \') будет циклом в С. Из (Ь) следует (с), так как есть по крайней мере один путь от вершины Г к вершине Г'. И, если бы существовало два таких пути (\; Гы ..,, Г') и (1г,1",',..., Г'), можно было бы найти такое наименьшее к, для которого Гь ф 1',,' прн удалении ребра Гь ~ — !'ь граф оставался бы связным, так как все еще существует путь (1ь „Г,',...,Г',...,Гь) от вершины Гь э к вершине Гь, который пе включает удаленное ребро.

Из (с) следует (а), так как если С содержит цикл (1', !'~,..., 1'), то существует два простых пути от вершины Г к вершине Ъ~. Чтобы показать, что (с!) и (е) также эквивалентны (а) — (с), сначала докажем вспомогательный результат: в конечном графе С без циклов и хотя бы с одним ребром существует по крайней мере одна вершина, которая является смежной в точности для одной другой вершины. Дьокажем это, рассмотрев некоторую вершину 1ь и смежную с цей другую вершину 1з. Для )г ) 2 вершина!'ь является смежной либо для верьпины 1'ь ь и никакой другой, либо для какой-то другой, например с вершиной Ъгьь.ь ф )ьь ь. Поскольку в этом графе нет циклов, вершины 1 ь, ь'з,..., 1ььь должны быть различными, а потому данный процесс должен в конечном итоге завершиться.

Предположим теперь, что С вЂ” это дерево с и ) 1 вершинами, а 1'„— вершина, смежная тоььько для какой-то одной другой вершины, яапример для вершины Кв ПРи Удалении веРшины 1Г„и РебРа )ьп ь — )ьп полУченный в РезУльтате гРаф С' является деревом, так как вершина 1г„может находиться в простом пути графа С только в качестве начального или конечного элемента. Таким образом, доказано (методом индукции по п), что С имеет п — 1 ребер, а значит, из (а) следует (г)). Предположим, что С удовлетььоряет угловию (г)) и величины 1'ь, К, ь и С' имеют тот же смыгл, что н в предыдущем абзаце. Тогда граф С является связным, поскольку вершина рп связана с вершиной 1ьп ь, которая (по индукции по и) связана со всеми другими вершинами графа С'.

Таким образом, нз (г1) следует (е). Наконец, предположим, что граф С удовлетворяет условию (е). Если граф С содержит цикл, то можно удалить лкьбгк' ребро этого цикла, не нарушая связность графа С. Следовательно, продолжая такиль образом удалять ребра, получим связный граф С' с и — 1 — ьс ребральи и без циклов. Но поскольку из (а) следует (й), то ьс=б,т.е.С=С'. 1 Понятие свободного дерева можно непосредственно использовать для анализа компьютерных алгоритмов. В разделе 1.3.3 уже рассматривалось ььрименелие первого закона Кирхгофа для решения задачи о подсчете числа выполнений каждого шага алгоритма.

В результате было найдено, что закон Кирхгофа не позволяет полностью подсчитать это количество, но с сто помощью можно сокразить число неизвестных, значения которых еще потребуется особым образом интерпретировать. Благодаря теории деревьев можно установить количество оставшихся независимых неизвестных и предложить метод их поиска. Рис. 31. Абстрактная блок-схема программы 1.3.3А. Этот метод легче понять на конкретном примере, который впоследствии будет еще не раз использоваться для иллюстрации результатов применения данной теории.

На рис, 31 показана абстрактная блок-схема программы 1.3.3А после ее анализа на основе закона Кирхгофа из раздела 1.3.3. Каждый квадратик (т. е. блок) на рис. 31 представляет отдельный шаг вычислений, а буква или число внутри него — количество вычислений, которые выполнялись на этом шаге во время работы программы, согласно обозначениям из раздела 1.3.3. Стрелка между блоками указывает на возможность перехода в программе.

Все они отмечены символами емет,...,евт. Теперь задача заключается в том, чтобы на основе закона Кирхгофа найти все отношения между величинами Л, В, С, П, Е, Г, С, Н, 1 К, Т,, Р, ф В и 5, а также глубоко проникнуть в суть общей задачи.

(Замечание. Некоторые упрощения этой задачи уже внесены непосредственно на рис. 31. Например, блок между С и Е уже содержит число "1", что является следствием закона Кирхгофа.) Пусть Е, обозначает количество попыток обхода ветви е, во время выполнения данной программы, По закону Кирхгофа сумма величин Е на входе в блок = значение внутри блока = сумма величин Е на выходе из блока.

Например, для блока К получим (2) Еш + Ело = К = Еьа + Еш . В дальнейшем иелзвестнымп будем считать Еы Ет,..., Еэг, а не Л, В,..., Я. Блок-схему на рис. 31.можно представить в егце более абстрактном виде, т. е. в виде графа С, как показано на рис. 32. Блоки превратились в вершины, а стрелки емет,... теперь предгтавляют собой ребра графа. (Строго говоря, ребра графа не указывают направления, а потому направление стрелок следует игнорировать при рассмотрении теоретических свойств графа С.

Однако, как будет показано ниже, стрелки понадобятся при использовании закона Кирхгофа.) Дополнительно ребро ео, которое проходит от вершины "Начало" до вершины "Конец', вводится для удобства, чтобы закон Кирхгофа был одинаково применим для всех частей графа. В схеме на рис. 32 также внесено несколько изменений по сравнению г блоксхемой, показанной на рис. 31. Дополнительная вершина и ребро добавлены для разбиения стрелки еы на две, е~з и е~з, чтобы соблюдалось основное опргдсление графа (две вершины могут соединяться только одним ребром).

Такому же разбиению подверглась и стрелка е~э. Аналогичную модификацию схемы следовало бы сделать также для любой вершины со стрелкой, указывающей на эту же вершину. Некоторые ребра, представленные на рис. 32, выделены более жирным начертанием по сравнению с остальными. Они образуют свободное поддерево данного графа, соединяющее все его вершины. В графе блок-схемы всегда можно найти свободное поддерево, поскольку такие графы должны быть связными и согласно п. (Ъ) теоремы А, если связный граф С не является свободным деревом, в нем можно удалить ребро и получить граф без потери связности. Этот процесс можно повторять до тех пор, пока не будет получено искомое поддерево. Другой алгоритм поиска свободного поддерева рассматривается в упр.

6. В любом случае прежде всего следует устранить ребро ее (которое проходит от вершины "Начало" до вершины "Конец" ). Таким образом, можно пр( дположить, что ео в выбранном поддереве отсутствует. Пусть С' — свободное поддерево графа С, найденное таким образом. Рассмотрим произвольное ребро 1 — Г графа С, которое огпсутпстлвует в графе С'. Тогда можно отмстить важное следствие из теоремы А: граф С' и его новое ребро 1' — 1" содержат цикл.

Действительгю, имеется в глочиосгии один цикл вида (1', Г,..., 1'), Рнс. 32. Граф со свободным поддеревом, соответствующий блок-схеме на рнс. 31. поскольку существует уникальный простой путь от вершины Ъ' до вершины 1' в графе С'. Например, если С' является свободным деревом, показанным на рис. 32, то, добавив ребро ег, получим цикл, который сначала проходит через ребро ег., а затем (в противоположном направлении по отношению к указанным стрелкам) через ребра е4 и ез. Этот цикл можно записать в алгебраическом виде "ег — е4 — ез", используя знаки "плюс" и "минус" для обозначения направления обхода, когда он совпадает или не совпадает с направлением стрелок. Если выполнить этот процесс для каждого ребра, которое не входит в свободное дерево, получатся так называемые фундаментальные циклы (Зипдатепга! сус!сз), которые для схемы, показанной на рис.

32, выглядят так: Со: ео+е!+ез+е4+еб+е7+еб+езо+е!!+ест+е!4, Сг: ег — е4 — ез, С5. '85 — 87 — еб, Сз. ез + ез + 84 + еб + е7, С1з: е1з + 812 + е!з С!7! 'езг + егг + е24 + егг + е!! + е!5 + еш, а а ! С!9! '819 + 1'18 + е!9 Сго' его + е!8 + егг + егз, С21.' е21 — е!б — 815 — 81! — 827 — 824 — 822 — е!8, Сгз: егз+ егб — еш, (3) Очевидно, что ребро е,, которое не входит в свободное поддерево, будет представлено только в фундаь!ентальных циклах, а именно — в циклах С . Теперь мы вплотную приблизились к кульминационному моменту этого построения. Каждый фундаментальный цикл представляет решение уравнений Кнрхгофа.

Например, решение, соответствующее циклу Сг, выглядит как Ег = +1, Е4 = — 1, Ез = — 1, а соответствующие всем остальным циклам — как Е = О. Ясно, что коэффициенты вдоль цикла в графе всегда удовлетворяют условию (1) закона Кирхгофа. Более того, уравнения Кчгрхгофа являются "однородными', так, что сумма или разница решений уравнений (1) также является решением.

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

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

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