궁금합니다. 적어도 관련 알고리즘 하위 집합 (분석 할 수있는 알고리즘)에서 작동하는 자동 런타임 분석 방법이 있습니까?
나는 나에게 준 "자동 알고리즘 분석"인터넷 검색 이 하지만 너무 mathy된다. 내가 이해할 수있는 psuedocode의 간단한 예를 원합니다. 너무 구체적일지도 모르지만, 나는 그만한 가치가 있다고 생각했습니다.
궁금합니다. 적어도 관련 알고리즘 하위 집합 (분석 할 수있는 알고리즘)에서 작동하는 자동 런타임 분석 방법이 있습니까?
나는 나에게 준 "자동 알고리즘 분석"인터넷 검색 이 하지만 너무 mathy된다. 내가 이해할 수있는 psuedocode의 간단한 예를 원합니다. 너무 구체적일지도 모르지만, 나는 그만한 가치가 있다고 생각했습니다.
답변:
COSTA 당신이 상상할 수있는대로 인해, 많은 경우에 실패하지만 도구는 바로이 작업을 수행 계산 가능성 문제 . 이것에 관한 많은 논문 이 있습니다. E. Albert, P. Arenas, S. Genaim, G. Puebla, D. Zanardini 의 Java 바이트 코드 비용 분석은 좋은 출발점입니다.
접근 방식은 Javabyte 코드에서 런타임 반복을 유추하여이를 닫힌 형식으로 변환하는 것입니다. 이 도구는 공간 사용 범위도 계산합니다.
어떤 알고리즘도 주어진 알고리즘의 정지 여부를 결정할 수 없으므로, 특히 어떤 알고리즘도 주어진 알고리즘의 복잡성을 엄격하게 분석 할 수 없습니다.
나는 (반) 자동 평균 사례 분석, 즉 MaLiJAn ¹에 대한 한 가지 접근법을 알고 있습니다. Knuth가 TAoCP에서 사용하는 분석 종류와 매우 유사합니다. 핵심 아이디어는
추가 비용 측정 (예 : 비교, "시간") 만 작동하고 예상 값만 정확하고 (완벽한 확률 함수 가정) 더 높은 모멘트를 도출 할 수 없습니다.
외삽을 제외한 모든 단계는 엄격하며 [2]이 방법은 물론 적절한 랜덤 샘플 입력이 주어지면 잘 알려진 결과를 높은 정밀도로 재현하는 것으로 입증되었습니다. 결과에 대한 증거 또는 근사 보장은 없지만 (외삽 단계는 지금까지 순전히 추론적임)이 도구를 사용하여 얻은 결과는 알고리즘을 분석하고 가설을 공식화하기 어려운 실험을 수행하는 데 도움이됩니다 [3,4].
물론 Yuval Filmus가 지적했듯이 그러한 문제에 대한 일반적인 해결책을 기 대해서는 안됩니다. 그러나 일반적인 경우와 마찬가지로 일반적인 사례의 흥미로운 부분 집합에 대한 솔루션을 찾을 수 있습니다.
나는 어떤 종류의 일을 알게 됨으로써 결코이 분야에 대해 전문가 나 지식이 없다. 그것은 자동 평균 복잡성 분석과 관련이 있으며 그 작업은 Philippe Flajolet과 그의 동료들에 의해 수행되었습니다.
필자가 설명했을 때 내가 이해 한 바에 따르면, 저자는 작은 언어 (Turing이 완벽하지는 않지만 충분히 중요 함)를 설계하여 해당 언어의 제약 조건 내에서 작성된 알고리즘이 평균 복잡성을 자동으로 분석 할 수 있도록했다. Lambda-Upsilon-Omega, 즉 (바인딩 해제) 당시 시스템이 호출되었습니다 .
필자가 웹에서 찾은 한 논문은 1990 년 논문입니다. Philippe Flajolet, Paul Zimmermann 및 Bruno Salvy 의 알고리즘 에 대한 자동 평균 사례 분석 .
나중의 논문이이 작업을 확장했을 것으로 예상되지만 실제로는 모른다. 작품은 상당히 많이 인용되었으며, 웹을 검색하면 같은 주제에 대한 최신 작품을 얻을 수 있습니다.
나는 Flajolet과 그의 동료들의 연구가 매우 수학적 일 까봐 두렵습니다. 나는 읽기가 쉽지 않을 것입니다.