Грокаем а Иллюстрированное пособие для программистов и любопытствующих


Знакомство с алгоритмами В этой главе



Download 3,16 Mb.
bet7/79
Sana19.02.2022
Hajmi3,16 Mb.
#457977
1   2   3   4   5   6   7   8   9   10   ...   79
Bog'liq
Грокаем алгоритмы ( PDFDrive )

4
Знакомство с алгоритмами



В этой главе

  • Закладываются основы для остальных глав книги.

  • Вы напишете свой первый алгоритм поиска (бинарный поиск).

  • Вы узнаете, как описывается время выполнения алго­ритма («О-большое»).

  • Будет представлен стандартный прием, часто приме­няемый при проектировании алгоритмов (рекурсия).

Введение
Алгоритмом называется набор инструкций для выполнения некоторой задачи. В принципе, любой фрагмент программного кода можно назвать алгоритмом, но в этой книге рассматриваются более интересные темы. Ког­да я отбирал алгоритмы для этой книги, я следил за тем, чтобы они были быстрыми или решали интересные задачи... или и то и другое сразу. Вот лишь несколько примеров.

  • В главе 1 речь пойдет о бинарном поиске и о том, как алгоритмы могут ускорить работу кода. В одном примере алгоритм сокращает количество необходимых действий с 4 миллиардов до 32!

  • Устройство GPS использует алгоритмы из теории графов (об этом в гла­вах 6, 7 и 8) для вычисления кратчайшего пути к точке назначения.

  • При помощи методов динамического программирования (см. главу 9) можно создать алгоритм для игры в шашки.

В каждом случае я опишу алгоритм и приведу пример. Затем мы обсудим время выполнения алгоритма в понятиях «О-большое». В завершение будут рассмотрены типы задач, которые могут решаться с применением того же алгоритма.
Что вы узнаете об эффективности алгоритмов
А теперь хорошая новость: скорее всего, реализация каждого алгоритма в этой книге уже доступна на вашем любимом языке программирования и вам не придется писать каждый алгоритм самостоятельно! Но любая реализация будет бесполезной, если вы не понимаете ее плюсов и минусов. В этой книге вы научитесь сравнивать сильные и слабые стороны разных алгоритмов: из каких соображений выбирать между сортировкой слиянием и быстрой сортировкой? Что использовать массив или список? Даже выбор другой структуры данных может оказать сильное влияние на результат.
Что вы узнаете о решении задач
Вы освоите методы решения задач, которые вам сейчас, возможно, неиз­вестны. Примеры:

  • Если вы любите создавать видеоигры, вы можете написать систему на базе искусственного интеллекта, моделирующую действия пользователя с применением алгоритмов из теории графов.

  • Вы узнаете, как построить рекомендательную систему на базе к ближай­ших соседей.

□ Некоторые проблемы не решаются за разумное время! В части книги, по­священной NP-полноте задач, рассказано о том, как идентифицировать такие задачи и построить алгоритм для получения приближенного ответа.
А если брать шире, к концу этой книги вы освоите некоторые широко при­меняемые алгоритмы. После этого вы сможете воспользоваться новыми знаниями для изучения более специализированных алгоритмов из области искусственного интеллекта, баз данных и т. д. или взяться за решение более сложных задач в практической работе.
Ч
И


тт


Ary?

ТО НЕОБХОДИМО ЗНАТЬ

Чтобы читать эту книгу, необходимо знать базовую aj мер, возьмем следующую функцию: / (х) = х * 2. Чему равен резуль­тат /(5)? Если вы ответили «10» — читайте спокойно.
Кроме того, вам будет проще понять эту главу (и всю книгу), е владеете хотя бы одним языком программирования. Все . ные примеры написаны на Python. Если вы не знаете ни одного г ка программирования, но хотите изучить — выбирайте " ’ отличный язык для начинающих. Если вы уже знаете (скажем, Ruby) — все в порядке.
Б
инарный поиск
Предположим, вы ищете фамилию человека в те­лефонной книге (какая древняя технология!). Она начинается с буквы «К». Конечно, можно начать с самого начала и перелистывать страницы, пока вы не доберетесь до буквы «К». Но скорее всего для ускорения поиска лучше раскрыть книгу на середине: ведь буква «К» должна находиться где- то ближе к середине телефонной книги.
Или предположим, что вы ищете слово в словаре, и оно начинается с буквы «О». И снова лучше на­чать с середины.
Теперь допустим, что вы вводите свои данные при входе на Facebook. При этом Facebook необходимо проверить, есть ли у вас учетная запись на сайте. Для это­го ваше имя пользователя нужно найти в базе данных. Допустим, вы выбрали себе имя пользователя «karlmageddon».
F
i


acebook может начать с буквы А и прове­рять все подряд, но разумнее будет начать с середины.
Перед нами типичная задача поиска. И во всех этих случаях для решения задачи можно применить один алгоритм: бинарный поиск.

Бинарный поиск — это алгоритм; на входе он получает отсортированный список элементов (позднее я объясню, почему он должен быть отсортиро­ван). Если элемент, который вы ищете, присутствует в списке, то бинарный поиск возвращает ту позицию, в которой он был найден. В противном слу­чае бинарный поиск возвращает null.
Н

Download 3,16 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   ...   79




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish