|
|
|
| Добрый день. Помогите с выбором литературы. Тип не важен, электронная или в бумажном виде, хоть статьи, хоть книга всё равно. Главное ссылки.)))
Теперь тематика: олимпиадное программирование. Вот подробно:
Пробная задача
Утешительная задача
Моделирование
Теория чисел
Комбинаторика
Теория вероятностей
Теория игр
Теория графов
Длинная арифметика
Динамическое программирование
Двоичный поиск
Жадный алгоритм
Линейное программирование
Структуры данных
Работа со строкой
Последовательности
Полный перебор
Оптимизация
Физика
Вычислительная геометрия
Разное
|
Короче естессно не всё надо. Но я хотел бы почитать про большинство методов решения задач и про алгоритмы графов там и др. Язык: c++. Естессно желательно примеры на с++. Ну или хотя бы алгоритм решения. В общем хочу подготовиться к олимпиаде))) | |
|
|
|
|
|
|
|
для: winflip
(27.08.2009 в 17:51)
| | Хм... у вас вообще солидный кусок науки представлен... в отличии от программирования книги по математике требуют очень серьезной предварительной подготовки - т.е. нельзя указать просто список книг - нужно указывать порядок их чтения, причем этот порядок невозможно выстроить линейным образом от простого к сложному. В общем задачку вы ту ещё задали, может уйти несколько дней на подбор литературы, причем получившийся список нужно будет осваивать лет 20. Вероятно стоит начать с книг, посвященных олимпиадным задачам, параллельно закрывая пробелы в фундаментальных областях.
PS Трудность заключается ещё в том (это я к тому, что вряд ли вам системно что-то посоветуют), что большинство форумчан находятся далеко не только от научной деятельности и олимпиадного программирования, но и вообще от системного программирования - здесь в основном прикладники, которые думают скорее не о скорости кода, а о скорости разработки и оборачиваемости средств. Это сильно разные области и подходы в них зачастую прямо противоположенные. Первые заботятся о скорости вычисления (жертвуя скоростью разработки), а вторые - о скорости работы программиста (жертвуя скоростью вычисления). | |
|
|
|
|
|
|
|
для: cheops
(28.08.2009 в 10:32)
| | Ну хотя бы хотелось почитать про динамическое программирование, про теории графов(их ведь много), про перебор, поиск строки в подстроке. Олимпиады эти скорее не на скорость работы программиста, а на скорость работы программы.Уровень 9 -11 класс | |
|
|
|
|
|
|
|
для: winflip
(28.08.2009 в 14:30)
| | И комбинаторику | |
|
|
|
|
|
|
|
для: winflip
(28.08.2009 в 14:30)
| | Вообще без высшей алгебры браться за теорию графов сложно... да и за все остальное тоже. Не уровень это 9-11 класса, я бы посоветовал присмотреться к программе первого курса мехмата или ВМК по высшей алгебре. Кроме физики и моделирования, все перечисленное вырастает из алгебры (начать лучше с линейной алгебры), ну и конечно классического мат.анализа (без залазаний в топологию и функциональный анализ). Хороших и доступных для понимания книг по алгебре просто пропасть (они, кстати, как раз и ориентируются на 9-11 класс). Их главное следует воспринимать как серьезную математику, а не как книги по программированию, т.е. обязательно читать несколько раз и обязательно решать задачи. Иначе все будет впустую и поверхностно.
Я бы посоветовал, не разбрасываясь на частности, сосредоточиться на следующем порядке:
- линейная алгебра
- мат.анализ
- аналитическая геометрия (если физика нужна, не помешает и дифференциальная)
- теория вероятности (уже после алгебры и мат.анализа)
- численные методы (уже после всего остального)
Нельзя освоить дисциплины походя, читая книги уровня, которые выпускаются для программистов, математика - это на порядок более сложная штука. Олимпиадное программирование является скорее состязанием математиков, чем программистов. Поэтому лучше на ней и сосредоточиться. Это как в биатлоне - плохо стреляешь - ещё можно выкрутиться, но если на лыжах ездить не умеешь - шансов нет. | |
|
|
|
|
|
|
|
для: cheops
(28.08.2009 в 16:11)
| | Согласен. А с какой книги посоветуете начать. Конкретное что - нибудь есть?И ведь в этом списке есть что то исключительно по программированию.Может тоже посоветуеьте что-нибудь | |
|
|
|
|
|
|
|
для: winflip
(28.08.2009 в 19:44)
| | Ммм... очень сложно что-то конкретно посоветовать, так как я учился по книгам, которые уже давно не выпускаются, но современные издания найти очень просто, например, по линейной алгебре имется внушительный список.
>И ведь в этом списке есть что то исключительно по программированию.
Да, но без мат.аппарата с объяснениями на пальцах, книги по аглоритмам очень редко встречаются, имеются парочка очень хороших книг, вроде
Интерполяция. Методы и компьютерные технологии их реализации
Фундаментальные алгоритмы на C. Части 1 - 5. Анализ. Структуры данных. Сортировка. Поиск. Алгоритмы на графах (если сможете её достать, она покроет многие из пунктов в вашем списке)
Но это скорее исключения, подавляющее большинство книг требуют знания мат.аппарата хотя бы на уровне 1-2 курса технических специальностей университета. Собственно олимпиадный уровень подразумевает тоже самое.
PS Можно было бы привести более полный список, но у меня в основном советские издания, о которых уже ни слуху, ни духу. В общем литературу, конечно, можно найти, но для олимпиады нужен творческий и системный подход - т.е. сильное мат.образование. | |
|
|
|
|
|
|
|
для: cheops
(28.08.2009 в 20:28)
| | Спасибо за советы. В принципе у меня брат на 2 курсе университета. Может у него, что есть, а если что, то докуплю нужную литературу | |
|
|
|
|
автор: ! (28.08.2009 в 20:54) |
|
|
для: winflip
(28.08.2009 в 19:44)
| | Предлагаю Вам сначала ознакомиться с книгой Кормена "Алгоритмы. Построение и анализ", далее можно пробовать читать трёхтомник Кнута "Исскусство программирования". Там изложен практически весь классический Computer Science.
Если с высшей математикой плохо, то это начнёт сказываться при чтении (особенно при выполнении заданий Кнута), примерно поймете где что лучше подучить.
Но первоначально надо действительно хорошо заниматься математикой, потому что теория алгоритмов по сути как раздел математики.
imho | |
|
|
|