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

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

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

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

Алгоритм Прима — стадия 6. Несмотря на то что азгоритм Прима похож на алго- Листинг 16.8. Алгоритм Прима. !'и Посещенные Затраты Предтдушая р 'Р итм Дийкст ы, он не с адаст от некотопых ппоблем, тр 1пг Рггв Опд!гессед(в!гост Сгарв ' С,втгпсг Сгарь ** Тгеерег) вершном ребра вершина присуших алгоритму Дийкстры. Операция, выполняс- О Ра нет мая алгоритмом Прима, не будет отличаться от опера- /* Граф С взучается для создавая вового графа, аотормй является мвввмальвмм остовамм деревом, ции алгоритма Дийкстры, если присугствуюз ребра с а структура Сгард '.

обозааченвая указателем ТгееРтг, првввмает новое звачевпе. 1 РР 3 чг отрицательными затратами. Циклы с отрицатсльнылги в случае успеха возвранается звачеаве О, в случае оввбав возвранается звачевве <О 2 Ра ь ч 3 Ра 2 ч, затратами более нс представляют проблемы: в резуль*/ (СМАРН ВАОНАМ, СНАРН ООТОГМЕМ) тате работы алгоритма (имеется в виду дерево) цикла нс 2 5 нет ! создастся, значит, алгоритм нс может входить и бсско- втгосс псарь ' Тгее; б нет 2 нсчный цикл. атгпсг Рггв Магд!пЧ * М; Сходство этих алгоритмов отражается и на их реа- аггпсг ВдЧеБсап Ввсап; лизации.

Все проблемы реализации и работоспособнос- !от Мому!я!Сед, Ч, з, 3, 1омевг! Таблица 16.20. Алгоритм Прима — стадия 7. ти, характерные для алгоритма Дийксгры, присуши и ал- зд (!С (( !Тгеерег) гетега СМАРН ВАОРАММ!! 1'„ Посещенные Затраты Предмдушггя гори!А!у Прима. Реализация алгоризма Прима для вершгггим ребра вершина неориснтированных графов представлена п листинге ) 6.8. Тгее=иахесгарб(1и!ас); Самое длительное время выполнения алгоритма зу ()Тгее) гегпгп СМАРМ ООТОРНВН! РР нет Прима имеет порядок О(ЪР). При работе с разрсжснныда М=ва11ос(в!яеог(вегасе Ргзв Мосх!пЧ)ис->Мпвуегс!сев)," 2 да 6 чи ми графами его можно уменьшить, если использовать 1! (!М) приоритетную очередь вершин.

С использованием дво- ( Организация данных Работа г г)нзфаии ] ° ] ! Часть (! Глава !б ( тельно улучшенные характеристики. Для любого алгорнт- новляется, то можно значительно уменьшить время ЬГ (Евсап.сове<в[Елово.пепе .Ьомееесове) ( 5 . ве М[ввспп.певС!.Ьомееесове! ма, работающего с графами, количество итераций (а еле- выполнения, если просто подлерживать список ребер, довательно, и времени на выполнение) во многом зависит требующих изменения, и добавлять или удалять нх. м[55сап.Оввс].Реев=У! от скорости исследования структур данных графа.

Не существует строгих правил при оптимизации ) Во-первых, необходимо выяснить, — является ли алгоритмов работы с графами. Основной подход — сде) граф насыщенным нлн разреженным. Это во многом пать часто требуемые данные легкодоступными, а единЕдэевсепкпд(авэсап)! зависит от того, для чего он был разработан. Как пра- ственный способ, позволяющий добиться этой цели,— вило, чем больше структура данных (имеется в виду правильное использование структур данных. посевева, в добавить ребро в мвввмавьвое остоввое дерево. использование структурой физической памяти), тем яг больше времени займет выборка и полное выполнение ~~з]0~~щ задачи.

Чем больший объем памяти задействован в процессе, тел! больше времени потребуется на ее обслело- В этой главе были рассмотрены некоторые элементы )очевЕ=СЕАРН МОТСОММЕСТЕО)Ч=-1! гог (з=в;х<с->мпврегсзсев)з+я) ( ванне, в результате чего неизбежно увеличивается время теории графов, технологии представления графов в ка- (Т (М[з).язв(ее!)) сове(ппе! работы алгоритхза. Выбор представления, используюше- честве структуры данных, а также продемонстрироваго наименьший объем памяти, позволяет в значитель- ны алгоритмы, которые можно использовать практичеснои степени уменьшить время выполнения алгоритма.

кн. Библиотека графов, применяемая во всех примерах Во-вторых, нужно определить, можно ли даннухз кола, лостаточно гибка, так что ее можно использовать ( структуру данных применить к алгоритмам, которые ис- во всех приложениях, за исключением тех, в которых Ьомеве М[з].Ьомевесове! Ч=х! пользуются в вашем частном приложении. Если напри- главным критерием является время выполнения В ЭТОЙ ГЛАВЕ ь.зм Хоббс ЧАСТЬ Дополнительные тематические разделы Матричная арифметика ° Что такое матрица ° ! 1ростые операции матричной арифметики ° Реализация матричной структуры в языке С ° Инициализация матриц из массивов ° Извлечение матрицы из файла ° Запись обьектов МАТАХ Т в аьооць или в лруеой файл ° Г1олная реализация суммирования и транспонирования ° Сложные концепции матриц ° Решение линейных алгебраических уравнений ° Дальнейшие направления работы веркнт треугыьная =т> матрица Нк тем т реп оныня = = > мокрица донознитс еныегнеианииегкиераздеаы и†Часть [й основы просты и пюннтны; проблемы даже среднем спюжности можно решить без труда.

Деиствитепьно сложные вопросы могут потребовать присутствия в команде разработчиков специалиста по численному анализу, поскольку в данной главе зги вопросы не обсуждаются. (прн реализации э го выражение должно быль заключе- но в соответствую]цие циклы Еог). Таким же образом выполняется вычитание: ахе ь[ ] [з]ыа[к] [з]-ь[х] [З] 3 О О О 7 8 О О 6 7 11 О 3 8 9 1 3 7 8 3 О 8 7 8 О О 11 9 О О О 10 Ыатриниая агтуккгетика й[ффф Глава 17 ЫШ а не матрицу а)гп))п), где гп и и рассчитываются во вре мя выполнения программы. ПРИМЕЧАНИЕ Новый стандарт АЫ51 1999 г. по языку программирования Оп ации вычисл ния оп еделит лей и инве тиро- Сложение и вычитание должны быть вам знакомы.

РИСУНОК 17.3. Треуеатиная матюкал. С позволяет обьявпять массивы с помощью переменньн, рассчитываемых во время выполнения. Некоторые ранние вания матриц более сложны, однако сушествуют про- компилятюры также предоставляли такую возмюжность В этой главе треутольные матрицы используются не стыс и понятные метолы проведения этих операций и етсЯ транспонирование; бУквально это означает пеРс- при использовании нествндартнюго расширения. Однако становку элементов из рядов в колонки. Символически их реализации на языке С. Кроме того, при вычислении Н "1 ПГЛ1 ПРОВЕДЕНИГ1 миюиеествю компиляторов дю смх пюр зтогю ие юбеспечи атной ма ицы что часю л лается п и сшении сис- опсрацил транспонированил записывастсл с помощью рг кличного рода исследований, поэтому ил описанию вают.

8 целях установки совместимости и с ранним станслсчует уделить некоторое внимание. Верхние треуголь- дартом языка с, и с существующими компиляторами тем линейных алгебраических уравнении) основной про- всрхнсго индекса Т(Апз и читается как транспонировал. ныс матрицы талжс рассматриваются в разделе "Опре языки С, которые все еще не позволяют использовать блсмой является распространение (накопление) огплтбок. аал татрици А. Для квадратных матриц в результате рассчитываемые во время выпюпнения переменные, бибдслнтели и норма Евклида" данса в этой главс. (Вопросы ра.'ро.'ранен я и у ранения о.

1б л будут ТРьнспониРовапиа матРи ' пРосто "псРсбР"ывастсл" пиютека матриц реализует матричную арифметику вне рассмотрены в этой главе да1сс.) через главную диагональ. В общем же случае транспо- зависимости ют этой осюбеннюсти. бш]ее ело лнь„часть аботь[ ма ичлюи арифме нированнья мьтрипь Мх]л] Реализация матричной структуры в тики на языке программирования С вЂ” это реазизация ]7. [). языке С Арифметика указателей и индексы деталей проекта.

Илясется в виду инициа1изация псреВп кникает очевидный вопрос: "Что может быть проще?" МВССИВа 2 5 8 Прямоугольный массив действительно прост (как было которые используются для предо~веления матрицы, 4 5 6 1 = ~ ~ . ' ', ' Одним из первых вопросов, о которых следует поду- дгта нитеяыыетематическиеразла~ы 6ПЧасть И! Матричная артрметика Глава 17 ЙМЙ Фунюзия гп пепП сначала размещает массив типа!)овЫе соответствующего размера. Если прн этом происходит ошибка, немедленно возвращается [л[(»ЕЕ. Затем размещается и инициализируется сама структура МАТИ(Х Т. Если при размещении происходит ошибка, то ранее Г[п[голув;[ РИСУНОК 175. Сиво ктура мао~рггчнггго лгала с Динамическим размен!гнием массива.

Друтими словами, можно написать код, который будет иметь один из двух видов. Первый: сы, чтобы дать возможность использовать условные математические обозначения даже в самом рабочем коле К сожалению, когда-нибудь этот дополни~ельный шаг также приведет к затруднениям. Библиотека матрип реализует условные обозначения языка С. в котором Гаоо ао!] ~ а!О а(,~ ллс)нх = О; Гаг [ 1 = 0; 1 < Гама; 1++» ( (аг ( ) 0; ) < са1я; 1++» ( аггаур* а[ляг)ех) = 0.0; первым элементом является [0][0]. В этой главе исполь- По терминологии, принятой в С, основной матрич- размещенный массив типа доцЫе освобо:кдается, после ллеех+1! зуются и условные обозначения языка С при рассмот- нып тип можно определить как чего возвращается )Ч()Е)..

В противном случае мы по) ренин рабочего кода, и условные математические обо- лучим размещенную структуру МАТВ)Х Т с инициа) еурвавг мсслсс ( значения, когда речь идет о математике или уравнениях. ллв ганя! лизированными переменными готта и соЬ и значениями Вычисление переменной )пс)ех, если начать со зна- для переменных массива типа с)оцЫе. Функция ш (гее чения О и постепенно увеличивать его на ), позволяет ПРИМЕЧАНИЕ еанв)е *ма1! освобождает разлеещенную ранее структуру МАТВ)Х Т избежать проблемы выполнения сложной арифметики а связи с тем чга иа практике инагда индекс массива » ндтвтх тг и связанный с нею леассив переменных типа х)овЫе. путем использования преимуществ построчного хране- начинается с ! вместе О, получается очень самнигель- Кроме то! о, код ошибки устанавливается равным постоный кад С.

Эта может яызыяагь недоумение у опытных Когда массив динамически размещен, то указатель ния массива. При этом первый элемент следующей стро- па га), основываясь на размере матрицы, булат указы- Янной А1Л'ОСЕАН, определенной в Доейпев. С-праграммистае, которые ожидают, чга первый злеменг ки хранится в памяти сразу велел за пошгедним элсмен- массива будет иметь индекс О.

Если па нанай-та причи- вать на динамически размещенный массив переменных Г)РИ[у[ех[АН)(Е том текущей строки. Такой поахал практически полезен ие зта абсолютно неабхадима, нужно снабдить «ад са- тина с)овЫе (размещенных в то жс зрел!я, что и сама в том случае, когда расчетны отдельного элемента олнои агяетсгяующими комментариями, поясняющими зга раз- Ниже приведен соответствующий способ абьяяпения укаструктура, с учетол! значений переменных гонга и соЬ). матрицы зависят только от отдельного элемента другой личие. Например, рассмотрите вазможность адресации с помощью функциональной нотации гмк, чтобы индекс Учитывая все вьппесказанное, давайте начнем настоматрицы.

(Это справедливо при сложении и вычитании Ь. /» ВОЬЬ внвмвнвт был заключен з круглых скобках, а не з кяадрзтиых. Как ящлю реализацию набора подпрограмм обработки мат 6Ш- ' Дгтагнитк ы~ыгтгиптичегхгичт~да1и Матричная арт)хмгтггх гг ! Часть О! Глава 17 Обработка ошибок саве ЕСНЕЕНАтСдз Обшспринято, что названия переменных должны гесвгл 'гов-са1ввв в1авассп"! саве 1ИОЕХООЕОРЕАИСЕЕ Основным вопросом при проведении различного рода В сущности, невозможно запретить программисту выпал- быть осмысленными Например, для описания строк гееагв "1вдех оае аг галде"; нять прямой доступ к внутренним элементам структур индекс мгту более предпочтителен, чем !. При условных сложных расчетов в С (и во многих других языках просаве ЬЕИИ1ЯИАГСВг данных.

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

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

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

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