Menu

Nakov.com logo

Thoughts on Software Engineering

Книгата “Програмиране = ++Алгоритми;” с нов уеб сайт + безплатно в PDF вариант

Книгата “Програмиране = ++Алгоритми;” на Преслав Наков и Панайот Добриков, сочена от мнозина като “библията на състезателите по програмиране” има нов уеб сайт:

www.programirane.org

Книгата би могла да се ползва като продължение на книгите “Въведение в програмирането със C#” и “Въведение в програмирането с Java” и като допълнение към учебния план от безплатните курсове по програмиране за начинаещи, провеждани в Академията на Телерик, тъй като запознава читателя с по-сложни алгоритмични проблеми, често използвани по олимпиадите и състезанията по програмиране. Книгата може да бъде изтеглена безплатно в PDF формат.

Следва съкратено съдържание на обхванатия в книгата учебен материал:

Глава 1. Въведение в Алгоритмите

  • Основни математически понятия
  • Намиране броя на цифрите на произведение
  • Прости числа, мерсенови и съвършени числа
  • Биномни коефициенти, триъгълник на Паскал. Факторизация
  • Бройни системи и преобразуване, римски цифри
  • Рекурсия и итерация: факториел, редица на Фибоначи
  • Най-голям общ делител, алгоритъм на Евклид, най-малко общо кратно
  • Връщане от рекурсията и използване на променливите
  • Основни комбинаторни алгоритми: пермутации, вариации, комбинации
  • Разбиване на числа
  • Разбиване на множества
  • Оценка и сложност на алгоритми
  • Асимптотична нотация: O(n), W(n), Ɵ(n)
  • Определяне на сложност на алгоритъм

Глава 2. Въведение в структурите от данни

  • Списък, стек, опашка
  • Последователна (статична) реализация
  • Свързана (динамична) реализация
  • Двоични дървета
  • Балансирани дървета
  • Ротация
  • Червено-черни дървета
  • B-дървета
  • Хеш-таблици
  • Класически хеш-функции
  • Справяне с колизии
  • Затворено хеширане
  • Отворено хеширане
  • Реализации на хеш-таблица

Глава 3. Сортиране

  • Сортиране чрез сравнение
  • Дърво на сравненията
  • Сортиране чрез вмъкване
  • Сортиране чрез вмъкване с намаляваща стъпка. Алгоритъм на Шел
  • Метод на мехурчето
  • Сортиране чрез клатене
  • Бързо сортиране на Хоор (Quicksort)
  • Метод на “зайците и костенурките”
  • Сортиране чрез пряк избор
  • Пирамидално сортиране на Уилямс
  • Минимална времева сложност на сортирането чрез сравнение
  • Сортиране чрез трансформация
  • Сортиране чрез множество
  • Сортиране чрез броене
  • Побитово сортиране
  • Метод на бройните системи
  • Сортиране чрез пермутация
  • Паралелно сортиране

Глава 4. Търсене

  • Последователно търсене
  • Последователно търсене в сортиран списък
  • Последователно търсене с преподреждане
  • Търсене със стъпка. Квадратично търсене
  • Двоично търсене
  • Фибоначиево търсене
  • Интерполационно търсене

Глава 5. Теория на графите

  • Графи – основни понятия
  • Представяне и прости операции с граф: списък на ребрата, матрица на съседство, матрица на теглата, списък на наследниците (списък на инцидентност), матрица на инцидентност между върхове и ребра
  • Компоненти на свързаност
  • Построяване и прости операции с графи
  • Обхождане на граф: обхождане в ширина, обхождане в дълбочина
  • Оптимални пътища, цикли и потоци в граф
  • Директни приложения на алгоритмите за обхождане
  • Екстремален път в граф
  • Цикли
  • Хамилтонови цикли. Задача за търговския пътник
  • Ойлерови цикли
  • Потоци
  • Транзитивност и построяване. Топологично сортиране
  • Транзитивно затваряне. Алгоритъм на Уоршал
  • Транзитивно ориентиране
  • Транзитивна редукция
  • Топологично сортиране
  • Пълно топологично сортиране
  • Допълване на ацикличен граф до слабо свързан
  • Построяване на граф по дадени степени на върховете
  • Достижимост и свързаност
  • Компоненти на свързаност
  • Компоненти на силна свързаност в ориентиран граф
  • Разделящи точки в неориентиран граф. Двусвързаност
  • k-свързаност на неориентиран граф
  • Оптимални подмножества и центрове
  • Минимално покриващо дърво
  • Независими множества
  • Доминиращи множества
  • База на граф
  • Център, радиус и диаметър
  • Двойкосъчетание. Максимално двойкосъчетание
  • Оцветявания и планарност
  • Оцветяване на граф. Хроматично число
  • Планарност на графи

Глава 6. Търсене с връщане. NP-пълни задачи

  • Класификация на задачите: сложност по време, сложност по памет, нерешими задачи, NP-пълни задачи
  • Търсене с връщане
  • Удовлетворимост на булева функция
  • Оцветяване на граф
  • Най-дълъг прост път в цикличен граф
  • Разходка на коня
  • Задача за осемте царици
  • Разписание на училищна програма
  • Побуквено превеждане
  • Метод на разклоненията и границите
  • Задача за раницата (оптимална селекция)
  • Оптимални стратегии при игри
  • Игра “X”-чета и “O”
  • Принцип на минимума и максимума, алфа-бета отсичане, алфа-бета изследване до определена дълбочина

Глава 7. Разделяй и владей

  • Намиране на k-ия по големина елемент
  • Мажорант
  • Сливане на сортирани масиви
  • Сортиране чрез сливане
  • Бързо повдигане в степен
  • Алгоритъм на Щрасен за бързо умножение на матрици
  • Бързо умножение на дълги числа
  • Задача за Ханойските кули
  • Организиране на първенства
  • Циклично изместване на елементите на масив
  • Покриване с шаблон

Глава 8. Динамично оптимиране

  • Динамично оптимиране – въведение
  • Класически оптимизационни задачи
  • Задача за раницата
  • Братска подялба
  • Умножение на матрици
  • Триангулация на многоъгълник. Числа на Каталан
  • Оптимално двоично дърво за претърсване
  • Най-дълга обща подредица
  • Най-дълга ненамаляваща подредица
  • Сравнение на символни низове
  • Задача за разделянето
  • Неоптимизационни задачи
  • Числа на Фибоначи
  • Биномни коефициенти
  • Спортни срещи
  • Представяне на сума с неограничен брой монети
  • Представяне на сума с ограничен брой монети
  • Разбиване на естествено число
  • Числа без две съседни нули
  • Разпознаване на контекстно свободен език
  • Хедонийски език
  • Символно умножение
  • Други интересни оптимизационни задачи
  • Такси компания
  • Билети за влак
  • Числов триъгълник
  • Представяне на сума с минимален брой монети
  • Опроводяване на платка
  • На опашка за билети
  • Разпределение на ресурси
  • Семинарна зала
  • Крайпътни дървета
  • Разрязване на материали
  • Зациклен израз
  • Домино-редица
  • Трионообразна редица

Глава 9. Евристични и вероятностни алгоритми

  • Алчни алгоритми
  • Египетски дроби
  • Максимално съчетание на дейности
  • Минимално оцветяване на граф и дърво
  • Алгоритми на Прим и Крускал
  • Дробна задача за раницата
  • Задача за магнитната лента
  • Процесорно разписание
  • Разходката на коня. Хиперкуб. Код на Грей
  • Търсене с налучкване
  • Алгоритми Монте Карло и Лас Вегас
  • Числени алгоритми с приближение
  • Генетични алгоритми
  • Достигане на фиксирано приближение
  • Върхово покритие на граф

Глава 10. Компресиране

  • Кодиране
  • Обща класификация
  • Кодиране на последователности
  • Премахване на нулите
  • Компресиране с битови карти
  • Полубайтово пакетиране
  • Съвместно използване на битови карти и полубайтово пакетиране
  • Двуатомно кодиране
  • Замяна на шаблони
  • Относително кодиране
  • Математическо очакване. Кодиране с линейно предсказване
  • Кодиране на последователности
  • Един представителен пример: PackBits
  • Статистически методи
  • Алгоритъм на Шенън-Фано
  • Алгоритъм на Хъфман
  • Обобщен алгоритъм на Хъфман
  • Kод с разделители
  • Аритметично кодиране
  • Адаптивно компресиране
  • Адаптивно компресиране по Хъфман
  • Модели на Марков
  • Един представителен пример: MNP-5
  • Речниково кодиране
  • Ентропия
  • Стандарти и патенти
  • Статични срещу адаптивни методи
  • LZ77. Компресиране с плъзгащ се прозорец
  • LZSS. Едно подобрение
  • FLZ. Друг вариант на LZ77
  • LZW. Модификацията на Уелч
  • GIF. Гледната точка на CompuServe
  • Оптимални срещу алчни алгоритми
  • Компресиране в реално време
  • LZW срещу Марков
  • Компресиране със загуба
  • Изрязване и квантифициране
  • JPEG
  • Компресиране на видеоизображение. MPEG
  • Уейвлети
  • Компресиране с фрактали

Безплатно изтегляне на книгата “Програмиране=++Алгоритми;”

Книгата за алгоритми на Преслав и Панайот може да се изтегли безплатно от нейния сайт (programirane.org/download) или да се намери в хартиен вид на книжния пазар.

Previews (18,455), Views (9,126), Comments (9)

9 Responses to “Книгата “Програмиране = ++Алгоритми;” с нов уеб сайт + безплатно в PDF вариант”

  1. Plamen says:

    Много е добра наистина 🙂

  2. Най-добрата книга за алгоритми и структури от данни!

  3. Красимир Костадинов says:

    Търсих я по онлайн книжарниците, но навсякъде е изчерпана.. Някакви идеи ?

  4. Емил Гелев says:

    Здравей,Красимире,книгата я имаше по доста книжарници до скоро,явно тиража се е изчерпал,иначе почти съм сигурен,че можеш да я намериш в книжарницата на ФМИ.

  5. nakov says:

    За феновете на алгоритмите вече имаме безплатни курсове по алгоритмично програмиране за подготовка за олимпиади и състезания по информатика: https://softuni.bg

  6. То је неке интересантне ствари овде на 999999999 Хвала за то објављивање.

  7. Костадин says:

    Книгата наистина е изчерпена щом и на площад Славейков я няма.
    Благодарности за това, че може да се изтегли безплатно безплатно.

  8. Георги says:

    Това е библията!

  9. Abdulvek says:

    Легкая атлетика – покрой спорта, объединяющий такие дисциплины ровно: ходьба, аллюр, прыжки (в длину, высоту, тройной, с шестом), метания (диск, копье, молот, и толкание ядра) и легкоатлетические многоборья. Один из основных и наиболее массовых видов спорта. Лёгкая атлетика относится к очень консервативным видам спорта. Так список мужских дисциплин в программе Олимпийских игр (24 вида) не менялась с 1956 года. В программу женских видов входит 23 вида. Единственная разность это ход для 50 км, которой отрицание в женском списке. Таким образом, лёгкая атлетика является наиболее медалеёмким видом между всех олимпийских видов спорта.

    Программа чемпионатов в помещении состоит из 26 видов (13 мужских и 13 женских). На официальных соревнованиях мужчины и женщины не участвуют в совместных стартах.

    В англоговорящих странах легкая атлетика разделяется на две группы соревнований: “трековые” и “полевые”. Отдельный вид легкой атлетики имеет свою историю, приманка триумфы, свои рекорды, свои имена.

    Виды легкой атлетики принято подразделять для пять разделов: ходьбу, аллюр, прыжки, метания и многоборья. Каждый из них, в свою очередь, подразделяется для разновидности.

    Спортивная ход – для 20 км (мужчины и женщины) и 50 км (мужчины). Спортивная ход – это циклическое локомоторное ход умеренной интенсивности, которое состоит из чередования шагов, около котором спортсмен обязан неусыпно осуществлять контакт с землей и быть этом вынесенная вперед нога должна оставаться весь выпрямлена с момента касания земли и накануне момента вертикали.

    Аллюр – на короткие (100, 200, 400 м), средние (800 и 1500 м), длинные (5000 и 10 000 м) и сверхдлинные дистанции (марафонский аллюр – 42 км 195 м), эстафетный аллюр (4 х 100 и 4 х 400 м), бег с барьерами (100 м – женщины, СООБРАЗНО м – мужчины, 400 м – мужчины и женщины) и бег с препятствиями (3000 м). Соревнования сообразно бегу — один из самых старых видов спорта, по которым были утверждены официальные правила соревнований, и были включены в программу с самых первых олимпийских игр 1896 года. Ради бегунов важнейшими качествами являются: способность поддерживать высокую проворство для дистанции, выносливость (для средних и длинных), скоростная выносливость (для длинного спринта), реакция и тактическое мышление.

    Беговые цель входят подобно в состав дисциплин лёгкой атлетики, так и во многие популярные намерение спорта отдельными этапами (в эстафетах, многоборьях). Соревнования сообразно бегу проводятся для специальных легкоатлетических стадионах с оборудованными дорожками. На летних стадионах обычно 8-9 дорожек, на зимних 4-6 дорожек. Ширина дорожки — 1.22 м, линии, разделяющей дорожки — 5 см. Для дорожки наносится специальная разметка указывающая старт и финиш всех дистанций, и коридоры ради передачи эстафетной палочки. Сами соревнования примерно не требуют сколько-нибудь особенных условий. Определённое достоинство имеет покрытие, из которого изготовлена беговая дорожка. Исторически сначала дорожки были земляными, гаревыми, асфальтовыми. В настоящее эпоха дорожки для стадионах изготовлены из синтетических материалов, таких будто тартан, рекортан, регупол и других. Для крупных международных стартов технический совет IAAF сертифицирует пошив покрытия сообразно нескольким классам.

    В качестве обуви спортсмены используют специальные беговые туфли — шиповки, обеспечивающие хорошее соединение с покрытием. Соревнования сообразно бегу проводятся практически в любую погоду. В жаркую погоду в беге для длинные дистанции могут также организовываться пункты питания. В ходе бега спортсмены не должны мешать побратим другу, что присутствие беге особенно на длинные и средние дистанции возможны контакты бегунов. На дистанциях через 100 м предварительно 400 м спортсмены бегут каждый по своей дорожке. На дистанциях через 600 м — 800 м начинают на разных дорожках и путем 200 м выходят для общую дорожку. 1000 м и более начинают старт общей группой у линии, обозначающей старт. Выигрывает тот спортсмен, какой первым пересекает линию финиша. Быть этом в случае спорных ситуаций привлекается фотофиниш и первым считается тот легкоатлет, отрезок туловища которого первой пересекла линию финиша. Начиная с 2008 года IAAF начала постепенное внедрение новых правил, с целью повышения зрелищности и динамизма соревнований. В беге для средние, длинные дистанции и стипльчезе стаскивать 3 худших по времени спортсменов. В гладком беге для 3000 м и стипльчезе последовательно следовать 5 , 4 и 3 круга накануне финиша. В беге для 5000 метров также троих после 7, 5 и 3 круга соответственно. Начиная с чемпионата Европы 1966 года и Олимпийских игр 1968 возраст для регистрации результатов в беге для крупных соревнованиях, используется электронный хронометраж, оценивающий результаты с точностью накануне сотой доли секунды. Только и в современной лёгкой атлетике электроника дублируется судьями с ручным секундомером. Рекорды мира и рекорды более низкого уровня фиксируются в соответствии с правилами IAAF.

RSS feed for comments on this post. TrackBack URL

LEAVE A COMMENT