먼저 다른 알고리즘을 찾아서 함수를 계산하는 알고리즘에 대한 개념이 있습니까?


14

I 제대로 이해한다면, 실제 함수의 값을 계산하는 알고리즘 계산 복잡도 갖는다 다음 보유 만약 우리가 계산되면 정밀도 의 주문에 요구 단계 .fO(g(n))fδg(n)

우리가 처음은 "컴퓨팅에 대한보다 효율적인 알고리즘 발견 한 알고리즘이 경우, 어떤 "다음 계산 ?ff

다시 말해, 다음을 수행 하는 알고리즘 가 있다면 어떻게 될까요 ?A

  1. 계산을위한 효율적인 알고리즘 를 찾으십시오 .Bf

  2. 를 사용 하여 를 계산하십시오 .Bf

이 경우 알고리즘 가 알고리즘 이미 찾았 는지 여부에 따라 를 계산하는 데 걸리는 계산 시간을 더 이상 말할 수 없습니다 . 즉, 가 첫 번째 계산 된 숫자 인 경우 를 계산하는 데 필요한 컴퓨팅 시간 이 이 이미 계산 된 후 를 계산하는 데 필요한 계산 시간보다 훨씬 큽니다 .f(5)ABf(5)5f(5)f(3)

내 질문은 함수를 계산하기 전에 먼저 다른 알고리즘을 찾는 이런 종류의 알고리즘에 대한 개념 / 이론이 있습니까? 특히 나는 그러한 알고리즘의 계산 복잡성 분석에 대해 궁금합니다.


1
Mathematica가 기본적으로 요구하는 것을 수행한다고 말 하시겠습니까? 방정식을 풀고 방정식을 해결하는 데 사용할 알고리즘을 자동으로 파악한 다음 해결합니다.
user541686

itu.dk/people/sestoft/pebook을 확인하십시오 . 관련이 있습니다.
Nathan Ringo

답변:


18

작동 모드가 동일한 잘 알려진 알고리즘 인 Levin의 범용 검색 알고리즘이 있습니다. 예를 들어 만족할만한 공식에 대한 만족스러운 할당을 찾는 문제를 고려하십시오. Levin의 범용 검색은 모든 잠재적 알고리즘을 병렬로 실행하며, 만족스러운 할당을 출력하는 알고리즘이 있으면이 할당을 중지하고 출력합니다. 문제에 대한 최적의 알고리즘이 시간 에서 실행되면 Levin의 알고리즘은 올바르게 구현 된 경우 시간 O ( f ( n ) ) 에서 실행됩니다 (거의 큰 상수로).f(n)O(f(n))

Levin의 알고리즘은 (비록 큰 상수로 인해) 실용적이지 않지만 이론적으로는 매우 흥미 롭습니다. 범용 검색에 대한 자세한 내용은 Scholarpedia 기사 를 참조하십시오 .


10

우리는 함수가 있다고 가정 f인수 얻어 x종류를 A, 그리고 인수 얻어 다른 함수 출력 y타입을 B입력 한 결과를 반환을 C. 당신의 말로, f인수 x를 취하고 type의 입력을 받아서 type의 B결과를 출력 하는 "알고리즘"을 반환합니다 C.

함수 f는 유형이 있습니다

A → (B → C)

실제로 x : A유형의 함수를 가져 와서 반환합니다 B → C. 그러나 이러한는 f함수에 해당 g : A × B → C합니다 모두 xy한 번에 당신에게 최종 결과를 제공합니다. 실제로, 유형 간에는 동형이 있습니다

A → (B → C)

A × B → C

우리는 다음 gf같이 정의 할 수 있기 때문에

g(x, y) := f(x)(y)

우리는 정의 할 수 f측면에서 g같은

f(x) := (y ↦ g(x,y))

에서 통과의 동작 g을은 f이라고 태닝 및 기능 프로그래머는 모든 시간을 사용합니다. 계산 이론에서 하나의 입력을 취하고 함수 (알고리즘)를 출력한다는 아이디어는 smn 정리에 실려 있습니다.

귀하의 질문에 대한 답변은 "그렇습니다. 사람들은 항상 이것을합니다". 그러나 알고리즘을 찾는 알고리즘은 여전히 ​​알고리즘 일 뿐이라는 도덕이 있습니다.


1
마지막 문장 +1 잘했다.
John Coleman

f(5)c+ccf(5)f(5)c1+c2c1c2c1>c2

@ Programmer2134 컴파일러 최적화가 관심있는 개념입니까? 나는 이것의 배후에있는 이론 (특히 복잡성 이론과의 상호 작용)을 전혀 확신하지 못하지만, 이것은 잠재적 인 예일 수있다
Mark

찾을 유행어는 "부분 평가"입니다.
Andrej Bauer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.