계산 문제를 엄격하게 공식화하는 방법은 무엇입니까?


20

나는 종종 계산 문제 (또는 그 복잡성)에 대한 알고리즘을 요구하는 사람들과 상호 작용하지만, 우리 (컴퓨터 과학자)가 이해할 수있는 엄격한 방식으로 표현하지는 않습니다.

CLRS와 같은 책을 참조하는 것은 도움이되지 않습니다. 예를 들어 그래프의 인접 목록과 두 개의 정점이 주어진 정점 사이의 최단 경로를 계산할 때 일반적으로 매우 간단한 방법으로 엄격하게 진술 할 수 있기 때문입니다.

CS에 대한 최소한의 지식을 가진 사람이 컴퓨터 과학자들이 이해할 수있는 엄격한 방법으로 계산 문제를 공식화하고 진술하는 방법을 배울 수있는 좋은 책 (또는 다른 자료)이 있습니까?

바람직하게는이 책은 다양한 영역과 실제 예제에서 계산 문제를 엄격하게 공식화하는 방법에 대한 많은 예제를 가져야합니다.


설명

질문을 좀 더 구체적으로 설명하기 위해 1, 2 학년 학사 CS 학생 수준에서 세트, 함수, 그래프, 목록 등과 같은 기본 수학 / CS 용어를 알고 있다고 가정합니다. 마음). 예를 들어, 그들은 Aho와 Ullman과 같은 입문 교과서를 읽었습니다 (완전히 이해하지는 못했지만).


2
나는 이것이 좋은 질문이라고 생각하지만 좋은 대답이 있는지 모르겠다. "컴퓨터 과학자가 아닌 사람에게 컴퓨터 과학자처럼 생각하도록 가르 칠 수있는 방법이 있습니까?" 그리고 그 대답은 "그렇습니다. 그들을 컴퓨터 과학자로 만드십시오". 즉, 일부 소프트웨어 공학 연구자들은 이와 같은 것들에 대한 연구를 수행했을 수도 있습니다.
jmite

3
또한, 이것이 어느 정도의 유스 케이스라고 생각합니다. 누군가 자신의 문제를 올바르게 공식화하는 방법을 이해하지 못한다면, 주어진 프로그램이 무엇을하고 싶은지에 대한 여러 가지 시나리오와 각 경우에 예상되는 동작을 나열하십시오. 그런 다음 프로그래머는 그로부터 사양을 개발합니다. 즉, 나는 엔지니어가 아닌 이론적 인 사람이므로 틀렸다면 자유롭게 고쳐주십시오.
jmite

@jmite, 의견 주셔서 감사합니다. Software Engineering의 일부는 고객이 원하는 것을 이해하려고 노력하는 것이 옳습니다 ( 요구 사항 분석 이라고합니다 ). 그러나 그것은 보통 대규모 프로젝트를위한 것입니다. 나는 그러한 프로젝트에 대해 이야기하는 것이 아니라 엄격하게 언급되지 않은이 사이트에서 얻는 것과 같은 간단한 질문입니다. 나는 사람들에게 많은 예를 가지고 논리적으로 진술을하는 방법을 가르치는 책을 보았다. 알고리즘 및 계산 문제와 비슷한 것이 있기를 바랍니다.
Kaveh

1
즉, 특히 성인이 쉽게 얻을 수없는 특정 사고 방식이 필요하다고 생각합니다. 나는 사람들이 기술적 물건을 버리고 일상적인 물건의 관점에서 가능한 한 간단하게 문제를 설명하도록 노력했습니다. 문제는 일반적으로 제약을 잊거나 실제 시스템에서 O (N) 인 작업이 O (1) 인 것처럼 들리게됩니다. 그래서 나는 잘못된 문제에 대한 엄격한 정의에 매우 가까운 것으로 끝날 것입니다.
svinja

2
문제를 엄격하게 공식화하는 것은 평신도를 전문가 / 전문가와 분리시키는 핵심 학습 기술 중 하나이기 때문에 어떤면에서 모순이 있습니다.
vzn

답변:


3

학자들이 잘 알고 있지만 전문가 외에는 널리 알려지지 않은 훌륭한 자료는 Donald E. Knuth, Tracy L. Larrabee 및 Paul M. Roberts의 수학적 글 입니다. 출판 된 책, 강의 비디오 및 메모 세트가 있습니다. 예를 들어 종이를 작성하기 위해 수학 작문을 습득하려는 사람들의 관점에서 더 많이 쓰여지지만, 모든 조언은 문제를 정확하게 공식화하려는 평신도의 경우에 매우 적합합니다. 배우는 것은 쉽지만 수학적 작문은 책의 세부 사항으로서 알고리즘 또는 증명을 통해 해결하는 계산 / 알고리즘 문제 를 엄격하게 정의 / 제정하기위한 과학적 접근 입니다.

또한 고전적인 Garey & Johnson 텍스트 인 Computers & Intractability 는 문제를 정확하게 공식화하는 방법을 정확하게 설명하지는 않지만, 많은 문제와 유사한 문제의 섹션으로 구성된 다양한 이론적 / 개념적 / 기술적 "패턴"을 제공합니다. 계산 / 알고리즘 문제를 설명하기 위해 "빌딩 블록"으로 사용됩니다.


고마워요 vzn, 이들은 수학을 작성하는 것에 대한 좋은 자료이지만 다른 것을 찾고 있지 않습니다. 문제는 수학에서는 잘 쓰지 않고 사람들이 계산 문제를 명확하게 공식화하는 방법을 배우는 데 도움이되는 자료이므로 전문가는 질문하는 사람이 찾고있는 것을 이해하고 도울 수 있습니다.
Kaveh

yw; 당신은 그것들이 서로 다른 두 가지라고 말하고 그것들은 단어 / 구절에서 있습니다. 그러나 나는 그것들이 [소프트웨어 엔지니어링 어구를 빌리려고] "긴밀하게 결합되어"
vzn

3

다른 곳에서는 아직 출판되지 않은 엠마누엘 레 비올라 ( Emmanuele Viola) , 노스 이스턴 대학 (Northeastern University)의 교수 (T) CS 가이 멋지고 깔끔하고, 특이하고, 비교적 새로운 / 알려지지 않은 심판을 만났다 . 41pp. 그것은 매우 기본적인 수학적 개념, 예를 들어 암시에서 시작하여 Erdős-Szekeres 정리 및 Ramsey 이론 과 같은 고급 주제에 이르기까지 다양합니다 .


0

Robert Lafore의 알고리즘 및 데이터 구조 책을 구입하십시오.

이 책에서 모든 알고리즘은시와 매우 흡사 한 이야기로 설명됩니다. 그런 다음 사람에게 Lafore 버전의 알고리즘을 제공하고 나중에 CLRS 버전을 제공하십시오.

아마도 이런 식으로, 사람은 직관적 인 설명에서 엄격한 설명으로 변환하는 방법에 대한 느낌을 갖게 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.