나는 CS 분야를 처음 접했고 내가 읽은 많은 논문들에서 경험적 결과 (코드가없고, 명예와 증거)가 없다는 것을 알았습니다. 왜 그런가요? 컴퓨터 과학이 과학이라는 것을 고려하면 과학적인 방법을 따라서는 안됩니까?
나는 CS 분야를 처음 접했고 내가 읽은 많은 논문들에서 경험적 결과 (코드가없고, 명예와 증거)가 없다는 것을 알았습니다. 왜 그런가요? 컴퓨터 과학이 과학이라는 것을 고려하면 과학적인 방법을 따라서는 안됩니까?
답변:
수학은 과학이기도하기 때문에이 분야에서 발표 된 경험적 결과를 찾기 위해서는 오랜 시간을 검색해야 할 것입니다. 양자 물리학과 같은 경험보다 "리마와 증거"가 평가되는 다른 과학 영역이 있습니다. 즉, 대부분의 과학은 이론과 실제를 다양한 비율로 혼합하며 컴퓨터 과학도 예외는 아닙니다.
컴퓨터 과학은 수학에 뿌리를두고 있으며 (예 : http://en.wikipedia.org/wiki/Alan_Turing 과 같은 Turing의 약력 참조 ) 많은 결과 (일반적으로 "이론적 컴퓨터 과학"분야에서 더빙 됨)는 증거로 구성됩니다. 일부 계산 모델의 컴퓨터는 주어진 양의 작업 (예 : FOCS, STOC, SODA, SoCG 등의 회의)에서 일부 문제를 해결할 수 있습니다. 그럼에도 불구하고, 컴퓨터 과학의 다른 많은 결과들은 실험 결과 (예 : WADS, ALENEX 등의 회의 등)의 분석을 통해 이러한 이론을 실제 생활에 적용하는 데 관심이 있습니다.
실험의 관찰이 새로운 이론의 생성을 촉발하는 새로운 자연 이론의 생성을 자극하는 "자연 과학"에서와 같이 이론과 실천 사이의 이상적인 균형이 이상적이라고 종종 제안된다. 회의는 실험 및 이론 결과 (예 : ESA, ICALP, LATIN, CPM, ISAAC 등)를 모두 받아들이려고합니다. 컴퓨터 과학에서 "알고리즘 및 데이터 구조"의 서브 필드는 "이론적"컨퍼런스가 일반적으로 실험적인 컨퍼런스보다 더 높은 순위라는 의미에서 불균형을 겪을 수 있습니다. HCI 나 AI와 같은 컴퓨터 과학의 다른 하위 분야에서는 이것이 사실이 아니라고 생각합니다.
도움이 되길 바랍니다.
알고리즘을 잘 구현하는 것은 이론을 증명하는 것과 다른 도구 세트를 취하는 기술입니다. 이론 커뮤니티에서 발견 한 많은 알고리즘이 실제로 실제로 구현되었습니다 (이 과정에서 이론 커뮤니티가 더 큰 역할을하고 싶지만). 물리학은 동일한 연구자들에게 이론과 실험을 요구하지는 않지만 두 그룹이 의사 소통을 할 것으로 예상됩니다. 왜 컴퓨터 과학에서 같은 분열을 기 대해서는 안됩니까?
편집에 추가됨 :
벨 연구소 (Bell Labs)와 AT & T 연구소 (AT & T Labs)에서 위의 "역할"의 의미에 대한 Suresh의 답변에 대한 나의 의견을 넓히고 알고리즘의 연구자들은 개발중인 사람들과 대화하도록 장려했다. 내가해야 할만큼이 일을 많이하지는 않았지만 적어도 한 장의 논문을 꺼내서 대학과 실무자 이론의 사람들 사이에 의사 소통이 더 많으면 현장에 좋을 것이라고 생각합니다. . 그렇다고 알고리즘을 만든 사람이 모두 코딩해야한다고 생각하는 것은 아닙니다 (실용적 임에도 불구하고).
다른 한편으로, 실용적이라고 생각하는 코딩 알고리즘 (또는 학생이 가지고있는 코드를 갖는 것)은 실무자에 의해 적응되도록하는 데 유용 할 수 있습니다. 한 가지 예를 생각해보십시오. Lempel과 Ziv는 1977 년과 1978 년에 새로운 데이터 압축 알고리즘에 관한 두 가지 기술 논문을 작성했습니다. 다들 무시 했어요 1984 년, 웰치가 쓴 훨씬 적은 기술 논문 어느 정도의 성능을 향상 LZ78에 약간의 트위스트를주는 및 기타 데이터 압축 방법과의 성능을 비교하는 작은 연구 결과를 주었다. 그것은 많은 프로그래머들에 의해 읽힌 저널에 출판되었으며, 알고리즘은 몇 줄의 의사 코드에 의해 주어졌습니다. 이 방법은 여러 곳에서 빠르게 적용되어 결국 악명 높은 지적 재산권 분쟁이 발생했습니다.
물론 알고리즘 연구원이 실습과 의사 소통하는 가장 좋은 방법 중 하나는 Google, IBM 또는 다른 회사에서 일하는 대학원생을 배출하는 것입니다. 우리는 이미 그렇게하고 있습니다. 또 다른 방법은이 포럼에서 실무자의 질문에 대답하는 것입니다. 잘만되면, 우리는 그것의 합리적인 일을하고 있습니다.
이론적 컴퓨터 과학의 경험적 방법과 방법을 사용하는 한 연구 분야는 "실험 알고리즘"또는 "알고리즘 공학"이라는 분야입니다. Chris가 언급했듯이, 최신 시스템에는 복잡한 캐시 및 대기 시간 문제가 있기 때문에 모델링에 어려움을 겪기 때문에 고성능 컴퓨팅은 이것에 크게 의존합니다.
Gerth Brodal 과 Peter Sanders 는 "증거"와 "경험적"영역에서 발을 유지하는 연구원의 좋은 예입니다.
--2013 년 1 월 2 일 업데이트-Robert Sedgewick 의 멋진 프레젠테이션에 대해서도 언급하겠습니다 .
이것은 당신이 속한 징계에 달려 있습니다. 제레미가 말했듯이 이론과 실제의 스펙트럼이 있습니다.
복잡성 과 같은 주제 는 종종 공간 또는 런타임의 경계를 찾는 것이기 때문에 이론 측면에 가중치를 두는 경향이 있습니다. C ++에서 알고리즘을 구현 한 다음 여러 번 실행한다고해서 문제가 NP- 완전임을 증명할 수는 없습니다.
정반대로서, 고성능 컴퓨팅 ( 슈퍼 컴퓨팅 과 같은 회의 )은 모두 경험적입니다. 메모리 계층 구조 및 커널 오버 헤드와 관련하여 너무 많은 가변성이 있기 때문에 HPC 간행물에 증거를 제출 한 사람은 없습니다.
목표, 기술, 커뮤니티 등에 따라 동일한 질문 (일이 얼마나 오래 걸립니까?)에 완전히 다른 두 가지 방식으로 접근하게됩니다. Poul-Henning Kamp 's You 're Doing It Doing It Doing of example 불협화음.
프로그래밍 언어 연구에서 새로운 프로그래밍 언어 구조 또는 새로운 유형 검사 메커니즘에 대한 많은 아이디어는 이론에 기인합니다. 종종 이러한 메커니즘에 대한 논문은 공식 / 이론적 / 개념적 관점에서 작성됩니다. 비교적 쉬운 일입니다. 다음은 첫 번째 장애물입니다. 기존 컴파일러의 맥락에서 새로운 구문을 구현하고 효율성 또는 유연성 측면에서 실험합니다. 이것도 비교적 쉽습니다.
그러나 프로그래밍 구성이 프로그래밍 과학의 발전을 구성한다고 말할 수 있습니까? 프로그램 작성이 더 쉽다고 말할 수 있습니까? 프로그래밍 언어가 더 좋다고 말할 수 있습니까?
내 대답은 아니오 야. 이러한 종류의 질문에 대답하기 위해서는 오랜 기간 동안 수많은 숙련 된 프로그래머가 참여하는 적절한 경험적 평가가 필요합니다. 이 연구는 거의 이루어지지 않았습니다. 프로그래밍 언어 (및 그 구조)의 가치에 대한 유일한 판단은 언어의 인기입니다. 그리고 언어 순수 주의자를 프로그래밍하기 위해 이것은 우리의 가설이 말하는 것과 반대입니다.
아마도 귀하의 질문에 대한 동기가 누락되었지만 연구, 알고리즘 및 기타 결과에 동기를 부여하는 경험적 결과의 많은 예가 있습니다.
MP3 는 psychoacoustic 을 사용 하여 사람 인코딩 알고리즘을 최적화합니다.
Plouffe 는 다음의 숫자에 대한 BBP 스피 곳 알고리즘을 발견 한 계정을 제공합니다.여기서 그는 정수 관계 알고리즘 Mathematica가 공식을 발견하기 위해 사용했던 것을 사용하는 것에 대해 이야기합니다 .
동일한 선을 따라 Bailey와 Borwein은 실험 수학의 큰 지지자입니다. 참조 : "실험 수학에 소개 도가니로 컴퓨터" , "번호 이론 전산 유람" 사이에 다른 사람 . 이것이 더 실험적인 수학 이라고 주장 할 수도 있지만,이 수준에서는 토론이 의미 론적이라고 주장합니다.
NP-Complete 문제의 위상 전이는 경험적 결과가 많이 사용되는 또 다른 영역입니다. 참조 Monasson, Zecchina, 커크 패트릭, 셀만 및 Troyansky 및 겐트와 월시 많은, 더 많은 (참조 있기는하지만, 우선 여기에 간단한 설문 조사에 대한 참조).
이론적 인 컴퓨터 과학 또는 수학 수준은 아니지만 유닉스 유틸리티 grep의 평균 케이스 런타임이 사람이 읽을 수있는 텍스트를 검색한다는 사실에 의존하기 때문에 최적화 된 최악의 알고리즘을 능가하는 방법에 대한 논의가 있습니다 (grep는 나쁘거나 임의의 문자가있는 파일에서는 최악).
가우스조차도 실험적 증거 를 사용하여 소수 이론에 대한 가설을 제시했습니다.
데이터 마이닝 ( Bellkor의 솔루션 받는 넷플릭스 상 더 나은 추천 시스템을 만들 수는) 완전히 경험적 증거에 기초한 이론으로 주장 될 수 있습니다. 인공 지능 (유전 알고리즘, 신경망 등)은 실험에 크게 의존합니다. 암호화는 코드 제작자와 코드 차단기 사이에서 끊임없이 밀고 나가고 있습니다. 나는 단지 몇 가지 이름을 지어 왔으며 경험적 정의를 완화하면 더 넓은 그물을 던질 수 있습니다.
귀하의 질문에 대답하는 데 뿌려진 것에 대해 사과드립니다. 그러나 최소한 도움이되는 몇 가지 예를 들었기를 바랍니다.