1

"주어진 애플리케이션에 적합한 알고리즘을 설계하는 것은 어려운 작업입니다. 중요한 창조 작업이 필요하며 문제를 해결하고 솔루션을 에테르에서 꺼내야합니다. 다른 사람의 아이디어를 수정하고 그것을 수정하거나 조금 더 나아지게 조정할 수 있습니다. 알고리즘 디자인에서 선택할 수있는 공간은 엄청 나서 충분히 자유롭게 자신을 걸 수 있습니다. "깊이있는 알고리즘 설계 기술 이해

나는 등

를 역 추적, 분할 및 정복, 동적 프로그래밍, 욕심 같은 알고리즘의 몇 가지 기본 설계 기술을 공부하지만, 난 항상 특정 프로그래밍 문제를 건너 때 적용하는 것을 원칙 인식하지 못한다. 알고리즘 설계를 마스터하고 싶습니다.

그래서 하나는 알고리즘 디자인에 대한

답변

0

좋은 책이 Kleinbeg Tardos입니다 ..... 깊이 알고리즘 디자인의 원리를 이해하는 가장 좋은 장소를 제안 할 수 있습니다. 모든 설계 기술은 당신이 다루어야 할 문제에 달려 있습니다. 알고리즘 서적의 연습을하고 교사의 의견을 듣는 것이 매우 중요합니다.

로컬 최적 선택이 존재하는 경우 전역 최적 솔루션을 가져 오므로 욕심 많은 알고리즘을 사용할 수 있습니다.

문제가 최적의 하부 구조를 갖고 있다면 동적 프로그래밍을 사용할 수 있습니다.

1

Jon Bentley가 프로그래밍 진주, 2 판을 제안합니다. 그는 알고리즘 설계 기술에 대해 많이 이야기하고 실제 문제의 예, 해결 방법 및 런타임에 영향을주는 여러 알고리즘을 제공합니다.

이 책 전체에서 알고리즘 설계 기술, 알고리즘이 올바른지 확인하기위한 프로그램 검증 방법을 배우고 데이터 구조에 대해 조금 배우게됩니다. 그것은 아주 좋은 책이고 나는 알고리즘을 마스터하고 싶어하는 모든 사람들에게 추천합니다. 아마존의 리뷰를 읽고 이동 http://netlib.bell-labs.com/cm/cs/pearls/

즐기십시오 : http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880

현재이 책의 내용 중 일부를 살펴 수 있습니다!

1

도서를 읽는 것만으로 알고리즘 설계를 배울 수 없습니다. 물론 책이 도움이 될 수 있습니다. 프로그래밍 진주은 다른 문제에서 제안한 바에 따라 문제가 많아서 좋습니다. 각 문제는 특정 유형의 문제를 해결하는 방법에 대해 생각하게합니다.

아이디어는 다양한 유형의 문제와 해결책에 자신을 노출시키는 것입니다. 그렇게함으로써, 당신은 문제를 조사하는 방법을 배우고 이미 보았던 문제들과 공통점이 있는지를 알 수 있습니다. 그런 점에서 수학 수업에서 "단어 문제"를 풀 수있는 방법을 배웠던 방법과 완전히 다른 것은 아닙니다. 물론 대부분의 알고리즘 문제는 트랙에서 두 열차가 충돌 할 위치를 파악하는 것보다 복잡하지만 문제를 해결하는 방법을 배우는 방법은 동일합니다. 간단한 문제를 해결하는 데 사용되는 일반적인 기술을 익히고 더 복잡한 문제를 해결하기 위해 이러한 기술을 결합하십시오.

읽기, 연습, 거품, 헹굼, 반복.

프로그래밍 진주 프로그래밍 진주과 같이 온라인에서 온라인으로 테스트 할 수있는 프로그래밍 문제가있는 사이트가 있습니다.아이디어를 서로 충돌시키고 흥미로운 도전을 제기하거나 문제 해결을 위해 함께 노력할 수 있기 때문에 알고리즘에 관심이있는 친구 또는 동료가있는 경우 도움이됩니다.

연습이 필요하다는 것을 언급 했습니까?

"마스터 링"에는 아무런 시간이 필요하지 않습니다. 오랜 시간. 인기있는 이론은 무엇이든 전문가가되기 위해서는 10,000 시간의 연습이 필요하다는 것입니다. 특정 시도에 대한 논쟁이 있지만 일반적으로 사실입니다. 너는 밤새 아무것도 마스터하지 않는다. 너는 공부해야 해. 그리고 연습. 그리고 다른 사람들이 한 것을 읽으십시오. 좀 더 공부하고 좀 더 연습하십시오.