알고리즘 설계 및 복잡성-그 '길'에서 생각하는 방법?


15

내 질문은 일반적인 것입니다. 알고리즘 디자인 및 복잡성 측면에서 어떻게 생각을 시작합니까? 알고리즘 디자인에서 대학원 과정을 밟을 것입니다. 나는 일찍 등록했지만 그것을 따라갈 수 없어서 나중에 떨어 뜨렸다. 이 과정을 요구 사항으로 이수해야합니다.

이런 식으로 생각하는 '트릭'이 있습니까? 나는 이것이 상당히 조잡한 것이라는 것을 알고 있지만 때로는 새로운 관점은 주제에 대해 다르게 생각하는 데 도움이됩니다.

이 과정 (및 유사한 이론 과정)에서 가장 큰 문제는 다음과 같습니다. 내가 제시 한 솔루션이 올바른지 어떻게 알 수 있습니까? 특정 알고리즘이 특정 방식으로 작동하거나 작동 할 때 특히 이론적 인 부분이 임의적이라고 생각합니까?

본 과정은 CLRS의 알고리즘 소개라는 표준 텍스트를 사용합니다.

교과서 / 사이트 / 책 / 등이 있습니까? 이 분야에서 자신감을 가질 수있는 방법을 제공 할 수 있습니까?

모두에게 감사 드려요,

제이슨 데인


2
이 게시물을 살펴 보는 것이 좋습니다 . 나는 Udi Manber의 책을 특별히 제안합니다.
MS Dousti

1
StackOverflow에 대한이 토론은 몇 가지 제안을 제공합니다. stackoverflow.com/questions/2256721/…
Jeffε

2
나는 Manber 추천 두 번째입니다. Jeff Edmonds의 알고리즘대해 생각하는 방법 도 확인하십시오 . amazon.com/Think-About-Algorithms-Jeff-Edmonds/dp/0521614104
Jeffε

"내가 제시 한 솔루션이 올바른지 어떻게 알 수 있습니까?" (1) 알고리즘을 만들었지 만 알고리즘이 올바른지 증명하는 방법을 모르거나 (2) 증거가 있지만 정확한지 확실하지 않다는 것을 의미합니까?
Jukka Suomela

1 단계 : 정답을 멈추고 다른 솔루션을 대신 참조하십시오. ;)
Raphael

답변:


18

나는에 코스 생각 알고리즘 설계계산 복잡도는 그들이 수학 성숙과 문제 해결 기술의 어느 정도를 필요로 할 수 있기 때문에 항상 이러한 주제에 익숙하지 않은 학생들을 위해 도전하고 있습니다. "계산의 복잡성"에 관한 나의 첫 번째 대학원 과정에서, 순수한 수학을 전공 한 내 친구는 그 과정에 많은 수학 배경이 필요하지는 않았지만 (최소한 그것이 과정 개요), 실제로 그의 순수 수학 학부 학위를 통해 얻은 거의 모든 기술이 필요했습니다!

나는 Sipser의 책 을 읽고 연습함으로써 "길"에 대해 가장 많이 알게되었다는 것을 알았습니다 (처음으로 대학원 공부를 시작할 때) . 문제 해결 기술과 수학 성숙도는 사실과 정의의 무리가 아니라 배우고 자하는 것이므로 연습을 수행해야합니다.

그러나 Sipser의 책은 복잡성과 NP- 완전성에만 적합하며 CLRS 책을 대체하는 것으로는 충분하지 않습니다. CLRS 서적의 유일한 문제점은이 서적이 학생들에게 무섭거나 압도적으로 보일 수 있기 때문에 포괄적 인 범위의 이점이 약점이 될 수 있다는 것입니다. 그래서 제 조언은 여러분이 실제로 도서관에 가서 알고리즘에 관한 책을 검색하고 하나씩 스캔하고 자신의 사고 패턴에 가장 적합한 것을 선택해야한다는 것입니다. 그리고 다시 운동하는 것을 잊지 마십시오!

알고리즘의 경우 개인적으로 다음 책을 제안합니다 (Sadeq 및 JeffE가 제안한 것 외에).

  • S. Dasgupta, CH Papadimitriou 및 UV Vazirani 의 매우 읽기 쉽고 아름다운 책 알고리즘 .
  • Jeff Erickson 의 킬러 노트 (또는 책 초안) JeffE는 자신의 메모를 제안하기에는 너무 겸손하기 때문에 직접해야합니다.

일반적으로 특정 알고리즘이나 데이터 구조를 연구 할 때마다 교과서의 설명이 명확하지 않은 경우 Google에서 특정 주제에 대한 강의 노트를 검색하는 것이 가장 좋습니다. 경우에 따라 동일한 내용에 대한 다른 설명으로 결국 완전한 그림을 얻을 수 있습니다. 적어도 그것이 저에게 효과적입니다.


8
Jeff의 킬러 노트 +1 나는 항상 그것들을 읽는 것을 즐깁니다. Algorithm이라는 단어의 아랍어 서예는 매우 아름답습니다.
Mohammad Al-Turkistany
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.