프롤로그에서 문제는 역 추적을 사용하여 해결됩니다. 명령형 패러다임보다는 (C, PHP 또는 Python 에서처럼) 선언적 패러다임입니다. 이런 종류의 언어에서는 복잡성에 대해 생각해 볼 가치가 있습니까?프롤로그 프로그램의 복잡성?
this question에있는 누군가가 지적한 것처럼 자연스러운 방식으로 문제가 O (N^2) 인 것 같습니다.
프롤로그에서 문제는 역 추적을 사용하여 해결됩니다. 명령형 패러다임보다는 (C, PHP 또는 Python 에서처럼) 선언적 패러다임입니다. 이런 종류의 언어에서는 복잡성에 대해 생각해 볼 가치가 있습니까?프롤로그 프로그램의 복잡성?
this question에있는 누군가가 지적한 것처럼 자연스러운 방식으로 문제가 O (N^2) 인 것 같습니다.
모든 언어에서 복잡성을 분석하는 것이 중요합니다. 프롤로그 또는 명령형 언어 여야합니다. 그러나 나는 당신에게 프롤로그 프로그램을 가속화하기위한 몇 가지 요령을 줄 수있다.
다른 언어와 마찬가지로 Prolog 프로그램의 복잡성을 명확하게 분석 할 수 있습니다. 당신이 링크 한 그 특별한 문제는 O (n^2) 일 것입니다. 그러나 모든 프롤로그 프로그램이 이러한 복잡성을 가지고있는 것은 아닙니다. 예를 들어, Prolog에서 SAT 솔버를 쉽게 작성할 수 있으며 그 문제는 NP-Complete입니다.
전적으로 문제에 달려 있습니다.
내가 말할 수있는 한 숫자의 합계는 O (N)입니다.
유일한 동작은 추가 ("is")와 재귀 호출이며 둘 다 각각 값 1이어야합니다. 그것들은 모두 목록에서 한 항목에 대해 ~ 한 번 수행되므로 총 작업은 ~ 2N이어야합니다 (O (N)).
_ a를 0으로 만들고 올바른지 확인하십시오. – starblue
감사합니다. starblue, fixed now – pfctdayelise
물론 그렇게 생각합니다. 목록이 있습니다. 목록을 반복합니다. 이것이 재귀 적으로 수행된다는 사실은 O (n) 복잡성을 말할 수 없다는 것을 의미하지는 않습니다. – AndyG