플롯 검사 휴리스틱을 속이는 방법?


23

동안 여기에 , 데이브 클라크는 점근 적 성장을 비교하기 위해 당신이 손에 기능을 플롯해야한다고 제안했다. 이론적으로 경 사진 컴퓨터 과학자로서 나는이 부두를 음모라고 부르지 않았다. 두 번째 생각으로, 나는 이것이 때때로 사용되지 않는 매우 유용한 접근법이라는 것에 동의해야한다. 줄거리는 첫 번째 아이디어를 얻는 효율적인 방법이며 때로는 그게 전부입니다.

TCS를 가르 칠 때 항상 다음과 같은 질문을하는 학생이 있습니다. "항상 작동하는 X 만 할 수 있다면 공식적인 증거가 필요합니까?" 오류를 지적하고 설명하는 것은 그의 교사 (들)에게 달려 있습니다. math.SE에서 결국 실패하는 명백한 패턴에 대한 훌륭한 예가 있지만 상당히 수학적 시나리오입니다.

그렇다면 플롯 검사 휴리스틱을 어떻게 속이겠습니까? 예를 들어 차이점을 구별하기 어려운 경우가 있습니다.

예 예 예
[ 출처 ]

추측하고 실제 기능에 대한 소스를 확인하십시오. 그러나 내가 원하는 것만 큼 장엄하지는 않습니다. 특히 실제 관계는 초보자조차도 기능 자체에서만 쉽게 알 수 있기 때문입니다.

함수 정의에서 진실이 명확하지 않은 (상대적) 점근 적 성장의 예가 있습니까? 합리적으로 큰 대한 줄거리 검사 는 완전히 잘못된 생각을 줍니까? 수학 함수와 실제 데이터 세트 (예 : 특정 알고리즘의 런타임)는 모두 환영합니다. 그래도 조각으로 정의 된 함수는 사용하지 마십시오.n


2
실제로, 나는 그것을 문제를 이해하기위한 팁으로 제안했습니다.
Dave Clarke

@DaveClarke : 알아요; 나는 당신의 초기 공식을 도발적인 오프너로 사용했습니다. 범죄 의도가 없습니다.
Raphael

답변:


23

(logn)anbO(nlogn)O(n0.6)

음모
[ 출처 ]

[0,1]n0.6n0.7n1/2log3/4nn2/3


15

여기에 또 다른 (구체적으로 구성되어있는) 예가 있지만 여전히 주목할만한 예가 있습니다. 도표는 점근 적 성장을 판단하는 데 매우 오해의 소지가 있음을 보여주기위한 것입니다.

fg

어떤 기능이 (무증상) 더 빨리 성장하는지 추측 할 수 있습니까?

2000까지 f와 g의 음모 최대 10,000까지 f와 g의 플롯 200,000까지의 f와 g의 플롯

fg

f(x)=x2
g(x)=sin(log(x))+1dxdx=x2(135cos(log(x))+15sin(log(x))).

따라서 는 본질적으로 , 즉 와 동일 하지만 이차 미분 값은 균일하게 가 아니지만 지수 적으로 증가하는 기간에 따라 과 사이에서 진동 합니다. 이 진동은 일반 플롯에서 보이지 않습니다.gx2f204

들어 예, 우리는 로그 - 로그 플롯을 고려하여 진동을 demask 수 있습니다 :

f와 g의 로그-로그 플롯 최대 200,000

물론 이것은 일반적으로 도움이되지 않습니다. 예를 들어, 우리는 두 개의 지수 기간을 가질 수 있습니다 ...


12

좋은 예는 Brzozowski의 매우 마법적인 최소 DFA 알고리즘입니다. 유한 오토 마톤 주어지면 최소 결정 론적 유한 오토 마톤을 계산할 수 있습니다.N=(Q,SQ,FQ,RQ×Σ×Q)

Minimize:NFADFA=DeterminizeReverseDeterminizeReverse

이것은 결정적이지 않은 오토 마톤을 취할 수 있고 결정론적인 알고리즘을 제공 할 수 있기 때문에 최악의 경우의 지수 시간 알고리즘입니다.

그러나 Brzozowski의 알고리즘에 DFA 를 입력으로 제공하면 많은 공통된 입력 유형에서 특수한 DFA 최소화 알고리즘 (일반적으로 또는 하드 코어하고 Hopcraft의 알고리즘을 구현하는 경우).O ( N 로그 ( N ) )O(n2)O(nlog(n))

이것은 "플롯 검사 휴리스틱"의 "플롯"부분에 닿습니다. 플롯을 그릴 때 샘플링 할 포인트를 선택해야하며, 포인트를 신중하게 선택하지 않으면 순진한 플롯을 속일 수 있습니다. 이것은 Quicksort 및 Simplex 알고리즘과 같은 다른 예제에서도 마찬가지이지만 교육학의 경우이 알고리즘을이 두 가지보다 선호합니다.

Quicksort의 차이는 "단일"2 차 대 로그 선형이며 다항식 / 지수 차이보다 덜 두드러집니다. 심플 렉스 알고리즘도 비슷한 차이가 있지만 Brzozowski의 알고리즘보다 분석이 훨씬 더 복잡합니다.

또한 Brzozowski의 DFA 최소화 알고리즘은 그다지 잘 알려져 있지 않지만 맛의 문제라고 생각합니다.


죄송하지만 함수 플롯 해석과 관련이 없습니다.
Raphael

3
인스턴스 샘플링에 대해 플롯 성능 대 인스턴스 크기와 같은 작업을 수행한다고 가정합니다. Brzozowski의 알고리즘은 기하 급수적 인 시간으로 인스턴스를 선택하지 않는 한 다항식을 "모양"합니다.
Neel Krishnaswami

1
내가 참조. 알고리즘을 벤치마킹하고 평균 런타임을 플로팅 할 때 문제가됩니다. 즉 올바른 데이터플로팅 하는 문제입니다 . 질문을 제기했을 때 나는 음모를 올바르게 해석하는 것에 대해서만 생각하고 있었는데 이는 완전히 다른 짐승입니다. 이 관점을 답에 추가해 주시겠습니까?
Raphael

평균과 최악의 경우 행동이 다른 모든 알고리즘에 대해 동일한 문제가 발생합니다. Quicksort와 Simplex가 떠 오릅니다.
Raphael

8

곡선 피팅 의 수학적 기술을 사용하여 질문에 대한 무한한 답변을 제공 할 수 있습니다. 커브와 범위가 주어지면 커브를 어느 정도의 정확도에 맞추는 다항식을 쉽게 찾을 수 있습니다. 위키 백과의이 예는 사인파가 4 차 다항식 (파란색 곡선)으로 상당히 정확하게 맞춰지는 방법을 보여줍니다.

여기에 이미지 설명을 입력하십시오

나는 고차 다항식을 사용할 수 있었고이 그래프보다 플롯 검사 휴리스틱을 훨씬 더 속일 수 있습니다.


2
사실입니다. 하지만 인공적인 맛도 있습니다. 물론 나는 이런 식으로 학생들을위한 반례를 만들 수는 있지만 더 회의적인 것으로 확신하지는 않습니다. 오해가 "치명적"인이 현상의 "자연적인"발생 (즉, 다른 기능으로 오인 될 수있는 더 높은 정도의 다항 함수)이 있습니까?
라파엘

나는 그것이 당신이 찾고있는 대답이 아니라는 것을 알고 있습니다.
Dave Clarke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.