1

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

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

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

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

ответ

0

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

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

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

1

Я предлагаю программировать жемчужины, второе издание, Джон Бентли. Он много говорит о методах проектирования алгоритмов и предоставляет примеры реальных проблем, как они решаются и как разные алгоритмы влияют на время выполнения.

На протяжении всей книги вы изучаете методы проектирования алгоритмов, методы проверки программ, чтобы обеспечить правильность ваших алгоритмов, а также немного узнать о структурах данных. Это очень хорошая книга, и я рекомендую ее всем, кто хочет освоить алгоритмы. Сразу читать отзывы в амазонке: http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880

Вы можете посмотреть на некоторые из содержания книги здесь: http://netlib.bell-labs.com/cm/cs/pearls/

Наслаждайтесь!

1

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

Идея состоит в том, что вы подвергаете себя различным проблемам и решениям. При этом вы узнаете, как исследовать проблему и посмотреть, имеет ли она что-либо общее с проблемами, которые вы уже видели. В этом отношении это не намного отличается от того, как вы научились решать «проблемы слов» в математическом классе. Конечно, большинство проблем с алгоритмами сложнее, чем выяснять, где на дорожках будут сталкиваться два поезда, но то, как вы научитесь решать проблемы, одинаково. Вы изучаете общие методы, используемые для решения простых задач, затем объединяете эти методы для решения более сложных проблем и т. Д.

Прочитайте, попрактикуйтесь, прополощите, промойте, повторите.

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

Я упоминал, что это требует практики?

«Освоение» требует чего-то. Долго. Популярная теория заключается в том, что на практике требуется 10000 часов практики, чтобы стать экспертом. Есть некоторые споры об этом для конкретных начинаний, но в целом это правда. Вы ничего не осваиваете за одну ночь. Ты должен учиться. И практика. И прочитайте, что сделали другие. Изучите еще немного и попрактикуйтесь еще немного.