admin / 20.01.2018

Вирт алгоритмы и структуры данных

Содержание

Никлаус Вирт — Алгоритмы и структуры данных. Новая версия для Оберона

16.07.2013

Аннотация:

В классическом учебнике тьюринговского лауреата Н. Вирта аккуратно, на тщательно подобранных примерах прорабатываются основные темы алгоритмики — сортировка и поиск, рекурсия, динамические структуры данных. Перевод на русский язык выполнен заново, все рассуждения и программы проверены и исправлены, часть примеров по согласованию с автором переработана с целью максимального прояснения их логики (в том числе за счет использования цикла Дейкстры). Нотацией примеров теперь служит Оберон/Компонентный Паскаль — наиболее совершенный потомок старого Паскаля по прямой линии. Все программы проверены и работают в популярном варианте Оберона — системе Блэкбокс, и доступны в исходниках на прилагаемом CD вместе с самой системой и дополнительными материалами. Большая часть материала книги составляет необходимый минимум знаний по алгоритмике не только для программистов-профессионалов, но и любых других специалистов, активно использующих программирование в работе. Книга может быть использована как учебное пособие при обучении будущих программистов, начиная со старшеклассников в профильном обучении, а также подходит для систематического самообразования.

Год издания: 2010

Издательство: ДМК Пресс

Формат: DJVU

Страниц: 274

Скачано: 9963 раз

Скачать книгу

 

Комментарии

yagub53@mail.ru, 02.12.2013 07:23

spasibo

Андрей, 06.06.2014 01:45

Спасибо огромное !

Наргиза, 15.11.2014 01:23

mirzahmedovan@mail.ru

Михаил 1724, 13.03.2015 03:15

Эх люблю до сих пор программировать на Паскале, не смотря на то, что давно устарел и но то, что я знаю несколько другие языки (Javascript, C++) Pascal — старый, тёплый, ламповый, простой

oleg, 28.12.2015 19:51

Книга супер, всем советую)

ДМ, 03.03.2017 03:14

Спасибо!!!

 

Оставить комментарий

Інформація

Автореферат

Анализ

архив

Бизнес-план

Биография

Бюллетень

Викторина

Диплом

Диссертация

Доклад

Программа курса «Алгоритмы и структуры данных»

Программа курса

«Алгоритмы и структуры данных»

для вступительных экзаменов в магистратуру

по специальности 6М060200 — «Информатика»
Введение

Предмет, объекты и составные части информатики. Физические и математические аспекты информации. Математические основы информатики. Языки как способы описания объектов и процессов.

Алгоритмы. Принципы анализа алгоритмов.

Алгоритмы. Анализ алгоритмов. Реализация и эмпирический анализ. Принципы анализа алгоритмов. Рост функций. О – нотация. Простейшие рекурсии. Примеры анализа алгоритмов. Основные программно — эффективные схемы вычислений

Типы и структуры данных

Фундаментальные типы данных. Представление массивов, записей и множеств.

Последовательности. Информационные структуры. Линейные списки. Стеки, очереди, деки. Последовательное распределение. Связанное распределение Списки.

Циклические списки. Ортогональные списки. Указатели. Деревья. Представления деревьев. Многосвязные структуры. Динамическое выделение памяти

Алгоритмы обработки последовательностей. Алгоритмы сортировки.

Алгоритмы внутренней сортировки: сортировка включением, сортировка выбором

Анализ двоичного включения. Анализ алгоритмов сортировки обменом

Алгоритмы внутренней сортировки: шейкерная сортировка, сортировка разделением

Нахождение медианы. Анализ алгоритмов внешней сортировки. Альтернативные методы сортировки.

Алгоритмы поиска

Линейный поиск. Двоичный поиск. Поиск в строке. Алгоритм Кнута-Мориса-Пратта.

Алгоритм Боуера-Мура. Алгоритмы обработки строк. Алгоритм Рабина. Рекурсивные алгоритмы. Алгоритмы с возвратом.

Методы и технологии программирования

Некоторые фундаментальные методы программирования. Технология разработки программ их реализация. Структурное и модульное программирования. Оптимизация вычислений. Методы отладки и тестирования программ. Основные принципы модульного программирования. Технология структурного программирования.
Список литературы

Основная литература:

  1. Дүйсембаев А.Ә. Информатика. Деректер құрылымы, сұрыптау және іздеу. Оқу құралы. Астана, 2005ж.
  2. Могилев А.В., Пак Н.И., Хеннер Е.К. Информатика: Учеб. пособие для студентов пед.

    Вузов.-М., 1999.- 816 с.

  3. Кнут Д. Искусство программирования для ЭВМ. Том 1: Основные алгоритмы./ Д. Кнут. – Москва, Санкт-Петербург, Киев, 2000.
  4. Кнут Д. Искусство программирования для ЭВМ. Том 3: Сортировка и поиск./ Д. Кнут. – Москва, Санкт-Петербург, Киев, 2000.
  5. Вирт Н. Алгоритмы + структуры данных = программа./ Н.Вирт. – М.: Мир, 1985.
  6. Вирт Н. Алгоритмы и структуры данных./ Н.Вирт. – М.: Мир, 1989. – 360 с.
  7. Информатика: Учебник / Под ред. Проф. Н.В. Макаровой. 2-е изд. – М.: Финансы и статистика, 2001.- 768 с.
  8. Степанов А.Н. Информатика: Учеб.пособие для вузов./ А. Н.Степанов. — 3-е изд.- СПб.: Питер, 2003.- 608 с.
  9. Каймин, В.А. Информатика:Учеб.для вузов./ В.А Каймин;М-во образование РФ.-3-е изд.-М.:ИНФРА-М, 2003.-272 с.
  10. Козырев А.А. Информатика: Учеб.для вузов./ А.А.Козырев. – СПб.: Изд-во Михайлова В.А.,2002.–511 с.
  11. Светозарова Г. В.. «Практикум по программированию на языке Бейсик». – М.: Инфра, 1997г.
  12. Лекции по Теории Вычислительных Процессов и Структур. http://lib.khsu.ru/245/int0.html (zip)

Дополнительная литература:

  1. Евстигнеев В.А. Применение теории графов в программировании/ Под ред. А.П.Ершова. — М.: Наука. Гл. Ред. ФМЛ, 1985. — 352 с.
  2. Алгоритмы и программы решения задач на графах и сетях./ Нечепуренко М.И., Попков В.К. и др. — Новосибирск: Наука. Сиб.отделение, 1990. — 515 с.
  3. Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И. Лекции по теории графов // М.: Наука, 1990
  4. Харари Ф. Теория графов // М.: Мир, 1973.
  5. Косточка А. В. Дискретная математика. Часть 2 // Новосибирск: НГУ, 2001.
  6. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ //
  7. М.: МЦНМО, 2001.
  8. Орлов В.А. Теория графов и комбинаторика: Учебное пособие. — Томск: Изд.ТПИ, 1988. — 96 с.
  9. Пападимитриу Х., Стайглиц К. Комбинаторная оптимизация. Алгоритмы и сложность. — М.: Мир, 1985.
  10. Кристофидес Н. Теория графов. Алгоритмический подход. – М.: Мир, 1978.
  11. Дистель Р. Теория графов. – Новосибирск: Издательство Института математики СОРАН, 2002.

Программа курса

«Теория языков и автоматов»

для вступительных экзаменов в магистратуру

по специальности 6М060200 — «Информатика»
Основная часть

Языки и грамматики
Алфавиты, цепочки и языки. Представление языков. Проблемы формализации. Основные понятия формальных грамматик. Терминальные и нетерминальные символы. Правила вывода. Классификация грамматик: регулярные грамматики, контекстно-свободные грамматики, контекстно-зависимые грамматики, грамматики общего вида, атрибутные грамматики, программные грамматики. Иерархия Хомского формальных языков. Алгоритмические проблемы: проблема пустоты, проблема идентификации, проблема эквивалентности языков.
Конечные автоматы
Детерминированные конечные автоматы. Диаграммы Мура (Системы переходов)

Эквивалентность конечных автоматов. Теорема Мура. Автоматы Мили и Мура. Алгебраическая структурная теория конечных автоматов. Кодирование внутренних состояний конечного автомата. Последовательная и параллельная декомпозиция конечных автоматов. Классификация автоматов: конечные автоматы, автоматы с магазинной памятью, двухсторонние автоматы, машины Тьюринга, детерминированные и недетерминированные автоматы, автоматы фон Неймана. Построение недетерминированного конечного автомата по регулярному выражению. Построение детерминированного конечного автомата по недетерминированному автомату. Нечеткие грамматики, автоматы и языки

Лексический анализ
Распознавание символов. Программирование лексического анализа. Конструктор лексических анализаторов LEX
Синтаксический анализ
Нисходящий синтаксический анализ. LL(1) — грамматики. Рекурсивный спуск. Преобразования КС-грамматик. Удаление левой рекурсии. Левая факторизация. Достоинства и недостатки LL(1) анализа. Восходящий синтаксический анализ. Разбор снизу-вверх типа сдвиг-свертка. LR(1)-анализаторы. Создание и использование таблицы синтаксического анализа. Особенности LR — анализа. Варианты LR- анализаторов
Семантический анализ
Формализация семантики языков программирования. Языки спецификации. Не контекстно — свободные характеристики языка. Организация таблиц символов. Таблицы идентификаторов. Таблицы расстановки со списками. Функции расстановки. Таблицы на деревьях. Реализация блочной структуры
Организация памяти и генерации кода
Организация памяти. Статическая и динамическая память. Адреса времени компиляции. Куча. Генерация кода. Создание промежуточного кода. Трехадресный код. Р — код. Байт – код. Создание машинного кода. Выбор инструкции. Распределение регистров. Оптимизация объектного кода
Список литературы

  1. Гилл А. Введение в теорию конечных автоматов: Пер. с англ. М.: Мир, 1966.
  2. Минский М. Вычисления и автоматы: Пер. с англ. М.: Мир, 1971.
  3. Горбатов В. А. Семантическая теория проектирования автоматов. М., 1979.
  4. Ахо, А, Ульман, Дж, Теория синтаксического анализа, перевода и компиляции.Том 2. Компиляция. – М.:Мир, 1998.– 487 с.
  5. Брауэр. Введение в теорию конечных автоматов
  6. Вирт Н. Алгоритмы + структуры данных = программы. М., Мир, 1985
  7. Арешян Г. Л., Маранджян Г. Б., О некоторых вопросах теории вероятностных автоматов, Математические вопросы кибернетики и вычислительной техники, вып. 2, Ереван, 1964.
  8. Б у х а р а е в Р. Г., Некоторые эквивалентности в теории вероятностных автоматов, Вероятностные методы и кибернетика, вып. 3, Казань, 1964.
  9. Лазарев В. Г., Пийль Е. И. Синтез асинхронных конечных автоматов, изд-во «Наука», 1964.
  10. Бухараев Р. Г., Вероятностные автоматы, Казань, 1970

Программа курса

«Теория баз данных»

для вступительных экзаменов в магистратуру

по специальности 6М060200 — «Информатика»
Основная часть

Основные понятия, история развития и базовые модели теории баз данных.

Назначение и основные компоненты системы баз данных. Обзор современных систем управления базами данных(СУБД). Уровни представления баз данных. Понятие схемы и подсхемы. Модели данных: иерархическая, сетевая и реляционная модели данных. Схема отношения. Язык манипулирования данными для реляционной модели, реляционная алгебра и язык SQL.

Реляционная модель баз данных. Основные методы проектирования.

Проектирование реляционной базы данных, функциональные зависимости, декомпозиция отношений, транзитивные зависимости. Проектирование с использованием метода «сущность – связь».

Реализация, концептуально – логической модели базы данных в конкретной СУБД.

Создание и модификация базы данных: поиск, сортировка, индексирование базы данных, создание форм и отчетов. Физическая организация базы данных; хэширование, индексированные файлы; защита баз данных; целостность и сохранность баз данных.
Список литературы

Основная литература:

  1. Кузнецов С.Д. Базы данных: языки и модели. Учебник. 2008.-720 стр. ISBN: 978-5-9518-023
  2. Мартин Грабер. SQL. Издательство: Лори, 2007 г.- 672 с

  3. Рэймонд Фрост, Джон Дей, Крейг Ван Слайк. Базы данных. Проектирование и разработка (Database Design and Development), Изд-во: НТ Пресс, 2007.- 592 стр. ISBN 978-5-477-00494-2, 0-13-035122-9

  4. Т.Кайт. Oracle для профессионалов. Архитектура, методики программирования и особенности версий 9i, 10g и 11g (Expert Oracle Database Architecture: Oracle Database 9i, 10g, and 11g: Programming Techniques and Solutions), Изд-во: Вильямс, 2011.- 848 стр. ISBN 978-5-8459-1703-4, 978-1-43-022946-9
  5. К. Дж. Дейт. SQL и реляционная теория. Как грамотно писать код на SQL (SQL and Relational Theory: How to Write Accurate SQL Code).- Изд-во: Символ-Плюс, Серия: High Tech, 2010.- 480 стр. ISBN 978-5-93286-173-8, 978-0-596-52306-0
  6. Джейсон С. Каучмэн, Ульрике Швинн. Подготовка администраторов баз данных (Oracle Certified Professional DBA: Certification Exam Guide). — Изд-во: Лори, 2009.- 868 стр. ISBN 978-5-85582-294-9
  7. Р.Гринвальд, Р. Стаковьяк, Дж. Стерн. Oracle 11g. Основы. Oracle Essentials: Oracle Database 11g. — Изд-во: Символ-Плюс, 2009.-464 стр.

    ISBN 978-5-93286-140-0, 978-0-596-51454-9.

  8. Джейсон Прайс.SQL для Oracle 10g (Oracle Database 10g SQL).-Изд-во: Лори, 2010.- 566 стр. ISBN 0-07-222981-0 5-85582-280-Х, 978-5-85582-280-9
  9. Чертовской В.Д. Базы и банки данных/ Учебное пособие.-СПб: Изд-во МГУП, 2001. -220 с.

  10. Джен Л. Харрингтон. Проектирование реляционных баз данных. –Изд-во: Лори, 2006 .- 240 с.

  11. К. Дж. Дейт. Введение в системы баз данных. (An Introduction to Database Systems), Изд-во: Вильямс, 2006.- 1328 стр. ISBN 5-8459-0788-8, 0-321-19784-4
  12. Советов Б. Я., Цехановский В. В., Чертовский В. Д.. Базы данных. Теория и практика. –Изд-во: М. Высшая школа, 2005 .- 464 с.

  13. Крёнке Д. Теория и практика построения баз данных. 8-е изд. – СПб.: Питер, 2003. – 800 с.

  14. Карпова Т. Базы данных. Модели, разработка, реализация. – СПб.: Питер, 2001. – 304 с.
  15. Конноли Т., Бэгг К., Страчан А. Базы данных: проектирование, реализация и сопровождение. Теория и практика. 2-е изд.: Пер. с англ. – М.: Издательский дом «Вильямс», 2000. – 1120 с.
  16. Грофф Дж., Вайнберг П. Энциклопедия SQL. 3-е изд. СПб.: Питер, 2003

  17. Грофф Дж., Вайнберг П. SQL: полное руководство: Пер. с англ. – К.: Издательская группа BHV, 2000. – 608 с.
  18. Мамаев Е. Microsoft SQL Server 2000 в подлиннике. СПб.: Изд-во BHV, 2001.

  19. М. П. Малыхина. Базы данных. Основы, проектирование, использование. — Изд-во: БХВ-Петербург, 2006. -528 стр. ISBN 5-94157-941-1.
  20. Microsoft SQL Server 2000: профессионалы для профессионалов/ Составитель Дм. Артемов.- Издательство: Русская Редакция, 2005 .- 512 с.
  21. Роберт Шелдон, Джоффрей Мойе. MySQL. Базовый курс (Beginning MySQL). — Изд-во: Вильямс, Диалектика, Серия: Программистам от программистов, 2007.- 880 стр. ISBN 978-5-8459-1167-4, 0-7645-7950-9
  22. Кевин Луни, Марлен Терьо.Oracle 9i. Настольная книга администратора (Oracle 9i DBA Handbook).-Изд-во: Лори, 2006.- 748 стр.ISBN 5-85582-203-6
  23. Кузнецов С.Д. Основы современных баз данных. — Киев, 1999.
  24. Розмахов О.Г. Основы проектирования баз данных.–М.,1993
  25. Ульман Д.Введение в системы баз данных.–М.,2000
  26. Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – М: Финансы и статистика,1989.
  27. Гусева Т.И., Башин Ю.Б. Проектирование баз данных в примерах и задачах. М.: Радио и связь, 1992.
  28. Карпова Т. Базы данных: модели, разработка, реализация. — Питер, 2001.
  29. Коннолли Т. Базы данных. Проектирование, реализация и сопровождение. Теория и практика.–М.,2000
  30. Горев А. Эффективная работа с СУБД.–СПб,1977
  31. Дейт К. Введение в системные базы данных. — Москва, 1999.
  32. Дубнов П.Ю. Ассеss 2000.–М.,2000
  33. Мейер М. Теория реляционных баз данных. — Москва, 1996.
  34. Грабер М. Справочное руководство по SQL. — Москва, 1997.
  35. Дж. Грофф, П. Вайнберг. SQL: Полное руководство. — Киев, 2004.
  36. Кириллов В.В. Структурированный язык запросов (SQL). — М.,1997.
  37. Полякова Л.Н. Основы SQL. Курс лекций. Учебное пособие. Москва, 2004.
  38. Ходырева Г.В. Реляционные базы данных: язык SQL// Информатика и образование. – 2004. — № 4. – С. 36-45.
  39. Шпеник М., Следж О. и др. Руководство администратора баз данных Microsoft SQL Server 7.0. — Москва, 1999.
  40. Андасова Б.З. Деректер базасының теориясы. Астана, 2010

Дополнительная литература

  1. А.М. Вендров CASE-технологии.Современные методы и средства проектирования информационных систем. http://www.codenet.ru/db/case/index.php
  2. Вирт Н. Алгоритмы + структуры данных = программы. Москва: Мир, 1985. -272 с.
  3. Вирт Н. Алгоритмы и структуры данных: Пер. с англ.-М.Мир,1989.-360 с., ил.

    Никлаус Вирт — Алгоритмы и структуры данных. Новая версия для Оберона

  4. Гайсарян С.С. Объектно-ориентированные технологии проектирования прикладных программных систем. Центр Информационных Технологий. www.citforum.ru
  5. Гради Буч. Объектно-ориентированный анализ и проектирование. 2-е изд. Rational Санта-Клара, Калифорния, 2000.

В классическом учебнике тьюринговского лауреата Н. Вирта аккуратно, на тщательно подобранных примерах прорабатываются основные темы алгоритмики – сортировка и поиск, рекурсия, динамические структуры данных.

Перевод на русский язык выполнен заново, все рассуждения и программы проверены и исправлены, часть примеров по согласованию с автором переработана с целью максимального прояснения их логики (в том числе за счет использования цикла Дейкстры).

Алгоритмы + структуры данных = программы — Вирт Н.

Нотацией примеров теперь служит Оберон/Компонентный Паскаль – наиболее совершенный потомок старого Паскаля по прямой линии.

Все программы проверены и работают в популярном варианте Оберона – системе Блэкбокс.

Большая часть материала книги составляет необходимый минимум знаний по алгоритмике не только для программистов-профессионалов, но и любых других специалистов, активно использующих программирование в работе.

Книга может быть использована как учебное пособие при обучении будущих программистов, начиная со старшеклассников в профильном обучении, а также подходит для систематического самообразования.

(Компакт-диск прилагается только к печатному изданию.)

В нашей электронной библиотеке вы можете скачать книгу «Алгоритмы и структуры данных» автора Никлауса Вирт в формате epub, fb2, rtf, mobi, pdf себе на телефон, андроид, айфон, айпад, а так же читать онлайн и без регистрации. Ниже вы можете оставить отзыв о прочитанной или интересующей вас книге.

Описание презентации Структуры и алгоритмы обработки данных Литература: Кнут по слайдам

Структуры и алгоритмы обработки данных Литература: • Кнут Д. Искусство программирования. т. 1, 2, 3, 4. Третье издание. — Вильямс, 2010. (1968, 1969, 1973, 2005) • Ахо А. , Хопкрофт Д. , Ульман Д. Структуры данных и алгоритмы. — ИД Вильямс, 2003. • Вирт Н. Алгоритмы + структуры данных = программы. – Невский диалект, 2008. (1985) • Вирт Н. Алгоритмы и структуры данных. – Невский диалект, 2008. (1989) • Кормен Т. , Лейзерсон Ч. , Ривест Р. , Штайн К. Алгоритмы: построение и анализ. — Вильямс, 2010. • Каррано Ф. , Причард Дж. Абстракция данных и решение задач на C+ +. Стены и зеркала, 3 -е издание. – Вильямс, 2003. (2002) • Кубенский А. А. Структуры и алгоритмы обработки данных. Объектно-ориентированный подход и реализация на С++. – БХВ-Петербург, 2004. • Гудрич М. , Томасия Р. Структуры данных и алгоритмы в Java. – Минск: Новое знание, 2003.

(2001)

Цели и задачи курса Цель – научиться технике конструирования и формулирования алгоритмов, описывающих некоторые типовые процессы обработки данных. Задачи: 1. Алгоритмы и структуры данных взаимосвязаны. 2. Использовать приемы, не зависящие от конкретных приложений. 3. Язык инструмент, а не самоцель. 4. Абстрактные типы данных и структуры данных — не одно и то же. 5. От сложного к простому через рекурсию. 6. Оценка эффективности алгоритмов – составная часть компьютерного решения задач.

Структура курса (1 часть) Указатели Динамические структуры данных Абстрактные типы данных (стеки, очереди, деревья) Рекурсия Эффективность алгоритмов. Управление памятью

Структура курса (2 часть) Хеш-таблицы Сортировка Поиск Комбинаторные алгоритмы

Основные понятия — память Фон-Неймановская архитектура Однородность памяти Область кода Область данных (статическая) Область данных (динамическая) Свободная память (куча) Память программы Куча

Основные понятия — данные тип данных — множество значений, которые может принимать переменная структура данных — набор переменных, возможно, различных типов данных, объединенных определенным образом ( способ организации данных )int a; // объявление переменной a целого типа float b; // объявление переменной с плавающей запятой char d = ‘s’; // инициализация переменной типа char struct str_name { int member_1; float member_2; }; Абстрактный тип данных — это тип данных, который предоставляет для работы с его элементами определённый набор функций.

class Stack { ………………… void Push(int i ); int Pop(); bool is. Empty(); …………………. };

Основные понятия — алгоритм Алгоритм — точная конечная последовательность действий , обеспечивающая получение требуемого результата из заданных исходных данных. Основные свойства алгоритмов: 1. Дискретность 2. Определенность (детерминированность) 3. Результативность 4. Массовость 5. Эффективность Алгоритм Евклида. Найти наибольший общий делитель для целых m>n. Начало m ; n; r=m%n; r= = 0 m=n; n=r; Конец Да Нет n;

Изучение алгоритмов и структур данных

21.06.2014

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

Самое первое, с чего нужно начать изучение какой-то темы — это определение цели изучения данного предмета. Как всем хорошо известно, без стимула что-то изучать крайне трудно. Эта человеческая особенность, которую можно использовать во благо себе. Например, если человек хочет эмигрировать в США, то он крайне заинтересован в изучении английского языка, и процесс изучения проходит довольно быстро. С другой стороны, когда многим школьникам язык практически не нужен, большинство из них так и не начинают говорить на английском языке к концу 11-ого класса.

Зачем можно изучать алгоритмы и структуры данных? Причин несколько. Во-первых, нельзя стать хорошим разработчиком, не зная такие базовые вещи, как основные алгоритмы и структуры.

Во-вторых, в огромном количестве интервью вам будут задавать вопросы по алгоритмам. Не важно, пригодятся вам эти знания во время выполнения работы, или нет. Правильно ли задавать такие вопросы на интервью — дело десятое, нам, разработчикам, просто стоит принять этот факт и изучить алгоритмы.

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

Лично я почувствовал необходимость в изучении алгоритмов и структур данных примерно на 2-м курсе, когда проходил первые несколько интервью на джуниорские позиции. Мне поступало довольно много вопросов по этой теме.

К сожалению, в своём институте я практически не изучал алгоритмы. Формально этот курс у меня был. Однако его вела молодая девушка (23 года, если я правильно помню), которая практически ничего не знала в этой теме. Всё, что мы успели пройти за семестр — это связанный список и бинарный поиск.

Курс лекториум от Куликова и Дворкина

Как же я восполнял пробелы в этой теме? Первое, что я сделал — это посмотрел отличную запись лекций по алгоритмам и структурам данных от Лекториум — Первый семестр, Второй семестр. Курс читается Александром Куликовым, а также Михаилом Дворкином. Это два талантливых преподавателя, которые посветили себя алгоритмам.

Данный курс — один из лидеров по теории в сфере алгоритмов и структур данных. Вы последовательно пройдете все основные алгоритмы и структуры данных. Всё начнётся с классических вещей (вычисление числе Фибоначчи), а закончится вполне себе интересными темами.

Честно сказать, я осилил только первый семестр, а также несколько лекций второго. Дальше без первичной подготовки мне было уже сложно.

Чем хорош этот курс? Во-первых, это гениальные преподаватели. Они действительно рассказывают очень интересно (правда, надо признаться, во всех видео курсах по алгоритмам, которые я видел, были замечательные преподаватели). Во-вторых, это отличная структура курса: от простого к сложному. Можно начать изучать алгоритмы практически без подготовки.

Чем плох этот курс? Данные видео — это запись реальных лекций, а не специально создававшийся видео курс. Поэтому, тут нет ни тестов, ни программирования. Есть только голая теория.

Кстати, этот курс представляет собой некоторую выжимку книги Кормен, Риверст, Лейзерсон. Алгоритмы: построение и анализ.

Курс «Алгоритмы и структуры данных поиска» от ШАД

Данный курс — альтернатива первому. Он тоже представляет собой запись реальных лекций, которые проходят в школе анализа данных Яндекса. Плюсы и минусы у курсов опять-таки схожи.

Ведет курс Максим Александрович Бабенко — невероятно крутой специалист в области CS. Этого преподавателя действительно приятно слушать: рассказывает весьма живо и интересно.

Как мне показалось, этот курс немного сложнее, чем курс от Лекториум.

Кормен

Когда мы говорим про алгоритмы, я просто не имею права ничего не сказать про книгу Кормена — Кормен, Риверст, Лейзерсон. Алгоритмы: построение и анализ.

Это действительно кладезь знаний по теме алгоритмов и структур. Книга позволит вам с нуля прокачаться до вполне серьезного уровня.

Какие плюсы книги? Есть всё: человеческое объяснение, псевдокод, оценка сложности, обоснование корректности.

Какие минусы книги? Книга совершенно точно не подойдёт для новичков в области алгоритмов. Она описывает буквально каждую мелочь в этой теме, и это может быть весьма непонятным для новичков.

Интерактивные курсы на Coursera

Думаю, все из вас знают, что такое Coursera. Если вы не слышали про это, то это онлайн платформа для обучения. Причём, одна из самых крупных.

В Coursera есть несколько курсов, посвящённых алгоритмам и структурам данных. Я сам их не изучал, но, говорят, что курсы очень крутые. Курс 1. Курс 2.

Практика в алгоритмах и структурах данных

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

Лично я выбрал для себя сайт http://codeforces.com/. В нём все задачи разбиты по тегам (например, можно выбрать задачи, которые должны решаться динамическим программированием). Также есть и разграничение по уровню сложности. Всё это позволяет найти подходящие задачи для своего уровня.

Надеюсь, эти материалы помогут вам повысить свой уровень в сфере алгоритмов и структур данных. Если я упустил какой-то хороший ресурс по изучению данной теме, напишите, пожалуйста, о нём в комментариях.

Категории: Программирование


Другие записи из этой рубрики:

Дьяконов В. П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ

В книге даны краткие сведения о современных отечественных и зарубежных микроЭВМ индивидуального пользования. Описаны основные версии бейсика, наиболее распространенного языка программирования персональных ЭВМ (ПЭВМ), отечественных микро- и мнниЭВМ (Электроиика-60, Электроника-, ДЗ-28, Искра-226, диалоговых вычислительных комплексов ДВК-1, ДВК-2 и др.). Изложены основы программирования на бейсике. Основное внимание уделено общему математическому, алгоритмическому и программному обеспечению расчетов на ПЭВМ. В справочник включена обширная Библиотека прикладных программ на бейсике (более 300 программ), обеспечивающих реализацию основных численных методов, вычисление большинства специальных функций и решение ряда практиеских задач в различных областях науки и техники.

Для инженеров, научно-технических работников и студентов втузов.

Дьяконов В. П. Справочник по алгоритмам и программам иа языке бейсик для персональных ЭВМ: Справочник. — Москва. Издательство Наука. Гл. ред. физ.-мат. лит., 1989.— 240 с. — ISBN 5-02-014530-0.

ОГЛАВЛЕНИЕ книги Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ

Предисловие
Как пользоваться справочником
Глава 1. Основные характеристики и возможности персональных ЭВМ
§ 1.1. Современные типы персональных ЭВМ и их возможности
§ 1.2. Карманные персональные ЭВМ (Pocket Computers)
§ 1.3. Персональные ЭВМ среднего класса (Home Computers)
§ 1.4. Профессиональные ЭВМ и вычислительные микросистемы индивидуального пользования
§ 1.5. Периферийное оборудование персональных ЭВМ

Глава 2. Бейсик — основной язык программирования персональных ЭВМ
§ 2.1. Алфавит и основные операторы языка бейсик
§ 2.2. Модификации языка бейсик
§ 2.3. Арифметические и алгебраические операции, работа в режиме калькулятора
§ 2.4. Элементарное программирование на языке бейсик
§ 2.5. Специальные вопросы программирования на языке бейсик
§ 2.6. Перевод программ с одной версии языка бейсик на другую

Глава 3. Алгоритмы и программы элементарных вычислений
§ 3.1. Операции с действительными числами
§ 3.2. Операции и функции с комплексными числами и переменными
§ 3.3. Вычисление степенных многочленов и дробно-рациональных функций
§ 3.4. Вычисление ортогональных многочленов
§ 3.5. Операции с матрицами
§ 3.6. Вычисление факториалов и комбинаторика
§ 3.7. Преобразования координат и векторный анализ

Глава 4. Алгоритмы и программы реализации основных численных методов
§ 4.1. Решение систем линейных уравнений
§ 4.2. Интерполяция и экстраполяция
§ 4.3. Решение нелинейных и трансцендентных уравнений
§ 4.4. Решение систем нелинейных уравнений
§ 4.5. Решение алгебраических уравнений с действительными и комплексными коэффициентами
§ 4.6. Поиск экстремумов функций одной и множества переменных
§ 4.7. Численное дифференцирование и вычисление коэффициентов чувствительности
§ 4.8. Вычисление определенных интегралов
§ 4.9. Вычисление определенных интегралов специального вида
§ 4.10. Решение систем дифференциальных уравнений
§ 4.11. Гармонический синтез
§ 4.12. Вычисление собственных значений и векторов матриц

Глава 5. Спектральный, статистический, корреляционный и регрессионный анализ
§ 5.1. Спектральный анализ на основе дискретного преобразования Фурье
§ 5.2. Специальные виды спектрального анализа
§ 5.3. Статистический анализ и подготовка гистограмм
§ 5.4. Реализация метода Монте-Карло
§ 5.5. Корреляционный анализ
§ 5.6. Регрессионный анализ (приближение функций по методу наименьших квадратов)
§ 5.7. Сглаживание данных эксперимента

Глава 6. Вычисление специальных функций
§ 6.1. Методы вычисления специальных функций
§ 6.2. Интегральные показательные функции
§ 6.3. Интегральные синус и косинус
§ 6.4. Гамма-функции (включая неполные)
§ 6.5. Функции Бесселя (включая модифицированные)
§ 6.6. Функции Эйри
§ 6.7. Интегралы Френеля
§ 6.8. Эллиптические интегралы
§ 6.9. Функции Струве, Ангера и Вебера
§ 6.10. Гипергеометрические функции
§ 6.11. Дилогарифм
§ 6.12. Функции Кельвина
§ 6.13. Функции Дебая и Зиверта
§ 6.14. Интеграл вероятности и родственные ему функции
§ 6.15. Некоторые статистические функции

Глава 7. Прикладные программы технических и экономических расчетов
§ 7.1. Типовые электротехнические расчеты
§ 7.2. Расчет индуктивных элементов
§ 7.3. Расчет емкостных элементов и конденсаторов
§ 7.4. Расчет линий передачи и Задержки
§ 7.5. Расчет усилителей
§ 7.6. Расчет активных фильтров
§ 7.7. Расчет нелинейных и ключевых электронных устройств
§ 7.8. Расчеты в механике и термодинамике
§ 7.9. Финансово-экономические расчеты

Приложение 1. Подготовка к работе системы подготовки программ на базе микроЭВМ Электроника-ДЗ-28
Приложение 2.

Номера ошибок и их содержание для систем подготовки программ на базе микроЭВМ Электроника-ДЗ-28
Приложение 3. Подготовка ПЭВМ FX-702P к работе
Приложение 4. Номера ошибок и их содержание для ПЭВМ FX-702P
Приложение 5. Программная реализация некоторых численных методов частного применения
§ П5.1. Построение полинома по его действительным корням
§ П5.2. Обращение матрицы, вычисление определителя и решение систем линейных уравнений с разными векторами свободных членов
§ П5.3. Решение системы линейных уравнений методом отражения
§ П5.4. Решение системы линейных уравнений методом простых итераций
§ П5.5. Решение системы линейных уравнений методом Зейделя
§ П5.6. Решение системы линейных уравнений с переопределенной матрицей
§ П5.7. Приближенное вычисление нормального решения системы линейных уравнений с вырожденной матрицей
§ П5.8. Решение системы нелинейных уравнений методом простых итераций
§ П5.9. Вычисление спектра реакции нелинейной системы с аналитически заданной передаточной характеристикой на гармоническое воздействие
§ П5.10. Регрессия для 16 видов парных зависимостей у (х)
§ П5.11. Сплайн-аппроксимация, интерполяция и экстраполяция
§ П5.12. Пакет программ с матричными операторами
§ П5.13. Приближение функций по Чебышеву
Список литературы
Предметный указатель

ПРЕДИСЛОВИЕ

Прогресс в экономике, промышленности, науке и технике, в сфере образования сейчас во многом зависит от массового внедрения вычислительной техники. Не случайно задача повышения «компьютерной грамотности» населения стала государственной и политической задачей. Ее решение возможно благодаря интенсивному развитию нового поколения вычислительных средств — микроЭВМ индивидуального пользования или персональных ЭВМ (ПЭВМ).

Уже сейчас у нас в стране в пользовании находятся многие десятки тысяч таких ЭВМ — от настольных отечественных вычислительных микросистем индивидуального пользования (на базе микроЭВМ Электроника-60, Электроника-ДЗ-28, Электроника-ТЗ-59, Искра-226 и др.) и диалоговых вычислительных комплексов (ДВК-1, ДВК-2, ДВК-3) до зарубежных карманных компьютеров (Pocket Computers FX-702P, PC-1211, РС-1500 и др.). Осваивается производство дешевых и массовых домашних компьютеров (Home Computers) типа Агат, Элек-троника-БК-0010 и др.

Однако пока даже существующий парк таких ЭВМ используется недостаточно эффективно. Главная причина этого в том, что пользователями ПЭВМ являются в основном непрофессионалы в области вычислительной техники и вычислительной математики. Они слабо знакомы с эксплуатацией ЭВМ, языками и основами их программирования, разнообразными численными методами. Литературы, где все эти вопросы, с учетом специфики персонального использования ПЭВМ, рассматривались бы одновременно, пока практически нет. Многие ПЭВМ поставляются пользователям с весьма краткими (и рассчитанными на профессионалов) описаниями, часто без библиотек прикладных программ. В результате ПЭВМ нередко превращается в «черный ящик» на столе пользователя, таинственные возможности которого остаются нераскрытыми.

Справочник ориентирован на отмеченную выше обширную категорию пользователей ПЭВМ. При его подготовке учтена специфика нынешнего этапа применения ПЭВМ в СССР, т. е. использование ПЭВМ главным образом для автоматизации решения рутинных научно-технических, статистических и экономических задач. Поэтому, а также с учетом ограниченного объема справочника в нем мало внимания уделено игровым задачам, применению ПЭВМ в быту, решению сложных информационных задач (обработка графиков, редактирование текстов и т. д.). Описание таких применений должно быть предметом специальной литературы.

По построению справочник похож на ранее изданную книгу автора [10], посвященную расчетам на программируемых микрокалькуляторах (ПМК). Более того, сохранена значительная часть контрольных примеров [10]. Это, по мнению автора, облегчит массовой категории пользователей ПМК освоение новой, гораздо более мощной вычислительной техники — ПЭВМ.

В справочнике кратко описаны основные типы отечественных и зарубежных ПЭВМ, их периферийное оборудование и основной язык программирования — бейсик (BASIC) .Рассмотрен ряд типовых версий бейсика, от простых до расширенных, содержащих команды обработки символьных переменных, косвенной адресации и построения графиков. Даны основы программирования на бейсике и перевода программ с одной версии бейсика на другую.

Основное внимание в справочнике уделено описанию общего прикладного математического, алгоритмического и программного обеспечения ПЭВМ, рассчитанного прежде всего на научно-технические и статистические расчеты. По сравнению с [10] существенно расширено описание алгоритмов и увеличена сложность решаемых задач. Так, в справочнике описаны универсальные программы для решения систем линейных и дифференциальных уравнений (в том числе с автоматическим выбором шага интегрирования), численного интегрирования с заданной точностью, вычисления всех корней полиномов с действительными- и комплексными коэффициентами и т. д. Существенно расширен круг вычисляемых специальных функций. В последней главе дан ряд прикладных программ для решения задач в некоторых конкретных областях науки и техники. Разумеется, эти программы не исчерпывают решения всего многообразия таких задач. При использовании всех возможностей персональных ЭВМ на них можно решать сложные научно-технические задачи, вплоть до проектирования космических аппаратов [29].

Справочник ориентирован на научно-технических работников, инженеров, техников и студентов вузов и техникумов. Поскольку подобное справочное руководство подготовлено впервые, автор отдает себе отчет в том, что книга не лишена недостатков, и с благодарностью примет советы и замечания по ее содержанию. Автор выражает глубокую благодарность рецензенту доктору технических наук, профессору С. В. Черемных, кандидату технических наук, доценту Т. А. Самойловой, Т. А. Калаевой и всем коллегам, оказавшим помощь автору в подготовке программ и рукописи. Пожелания по книге следует направлять по адресу: 117071 Москва В-71, Ленинский просп., 15. Главная редакция физико-математической литера­туры издательства «Наука».

В. П. Дьяконов

Скачать книгу Дьяконов В. П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. Издательство «Наука», Москва, 1989

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*