카테고리 이론, 계산 복잡성 및 조합 연결?


17

나는“ 함수 알고리즘 디자인의 진주 ”와“ 프로그래밍의 대수학 ”을 읽으려고 노력해 왔으며 , 재귀 적으로 (그리고 다항식으로) 정의 된 데이터 유형과 조합 객체 사이에 명백한 대응이 있으며, 동일한 재귀 정의를 가지며 그 이후에 선행합니다 조합 종에 대한 서두에 나와있는 것과 동일한 형식의 전력 계열 (또는 함수 생성)에 대해 설명합니다 (“ 종과 펑터 및 유형, Oh My! ”참조).

따라서 첫 번째 질문에 대해 전력 계열에서 생성 (재귀) 방정식을 복구하는 방법이 있습니까? 그래도 나중에 생각해야합니다.

나는“데이터 구조에 대한 정의 절차”의 일종으로 초기 대수와 최종 대수학이라는 개념에 더 관심이있었습니다. 기능적 프로그래밍에는 대수와 유사체 사이의 매핑, 산물과 관련하여 실용적인 프로그래밍 규칙 이 있습니다.. 이것은 복잡성에 접근하는 매우 강력한 방법 일 수 있습니다. 예를 들어, 그러한 맥락에서 마스터의 정리를 복구하는 것은 매우 간단 해 보입니다 (즉, 동일한 주장을해야 하므로이 경우 큰 이득은 아닙니다), 초기 대수의 독특한 변신과 F- 다항식 펑터에 대한 A와 FA 사이의 대수가 동형이라는 사실은 (내가 잘못 알고 있습니까?) 그러한 접근 방식이 데이터 구조에 대한 연산.

실용적인 관점에서, 융합 규칙 (기본적으로 대수 형태를 서로 구성하는 방법, 대수 형태, 일반 형태)은 프로그램 변환 및 리팩토링을위한 매우 강력한 최적화 기술입니다. 이 규칙을 최대한 활용하면 최적의 프로그램을 만들 수 있습니다 (불필요한 중간 데이터 구조 또는 기타 추가 작업 없음).

내가 뭔가 (그리고 무엇)에 있습니까? 이런 식으로 계산의 복잡성을 살펴 보는 것이 (학습의 관점에서) 수혜자입니까? 우리가 "좋은"초기 대수를 가질 수있는 구조가 어떤 문제에 대해 너무 제한되어 있습니까?

나는 검색 공간의 구조와 "검색 공간"과 "검색 알고리즘"이 functor의 초기 대수와 같은 "좋은"객체를 통해 상호 작용하는 방식과 관련하여 복잡성을 생각하는 방법을 찾으려고 노력하고 있습니다. 더 복잡한 구조를 볼 때 이런 식으로 보는 것이 유용한 지 이해합니다.


5
읽을 수 있도록 다시 포맷 할 수 있습니까?
레프 레이 진

11
아이디어에는 두 가지 잠재적 인 문제가 있습니다. 첫째, 모든 데이터 구조가 초기 대수를 사용하여 표현 될 수있는 것은 아닙니다. 일반적인 그래프 나 복잡한 포인터 구조는 functor의 초기 대수가 아닙니다. 둘째, 융합 규칙 등은 일반적으로 알고리즘의 O (-) 효율성을 변경하기보다는 코드의 효율성을 향상시킬뿐입니다 (예외를 알고 있지만).
Dave Clarke

고마워, 데이브, 나는 알고리즘 게임 이론 책을 읽으려고 노력하고 있으며 전통적인 치료법의 알고리즘은 대부분 운영상 명시 적으로 말해서 접근하는 일반적인 방법이 있는지 궁금해하고 초기 대수학 등이 좋았습니다. 그러나 일반적인 데이터 구조와 펑터 사이의 대응이 부족한 것은 문제입니다. @ sclv : 고마워, 내가 볼 것이다!
Stefan Petrov

복잡한 포인터 구조보다 그래프를 표현하는 다른 방법이 있다는 것을 지적하고 싶습니다. 특히 @DaveClarke의 일련의 변경 또는 추가를 통해 유도 적으로 나타낼 수 있습니다. 초기 대수와 그 한계에 대한 전문가가 아니기 때문에 범주 적으로 말하고 싶지는 않지만이와 같은 다른 구조에서도 마찬가지입니다.
Samuel Schlesinger

답변:


7

Dave Clarke의 의견은 매우 중요합니다. 일반적으로 융합은 O (-) 효율성을 변경하지 않습니다. 그러나 특히 흥미로운 것은 Liu, Cheng 및 Hudak의 Causal Commutative Arrows 연구입니다. 이들로 작성된 프로그램은 부분적으로 스트림 융합을 통해 동적 메모리 할당 및 중간 구조가없는 단일 루프로 최적화 할 수 있습니다. http://haskell.cs.yale.edu/?post_type=publication&p=72


6

Joyal의 조합 종, Sedgwick / Falojet의 "분석 가능한 조합", Yorgey의 Haskell 종은 모두 좋습니다.

Power 시리즈 Power UNIX diff fame의 McIlroy에 의해 심각함 Haskell Road to Logic 수학 및 프로그래밍의 핵심 기사에 관한 장도 읽어야합니다.

Saunders MacLane과 Chomsky / Schützenberger가 편집 한 Buchi 의 역사적 작품 은 파워 시리즈, 대수, 나무 및 유한 상태 오토마타를 연결합니다. Stanley에 설명 된 전송 매트릭스 방법은 가중 오토마타에서 생성 함수를 계산하는 방법을 보여줍니다.

나는 여전히 도메인 (GF, 가중 오토마타, 대수, 트리, 재귀)을 효율적으로 변환하는 가장 좋은 방법을 찾고 있습니다. 아직 좋은 Haskell symbolics 패키지가 없기 때문에 SymPy에 적용하고 있습니다.

개인적으로, 나는이 endofuction의 반복 그래프는 다음 바인딩 정확한 블랙 박스 검색을 얻기 위해 그것을 설정을 지배 A 최소 계산 찍은 http://oeis.org/A186202가 있는지 복잡성 결과의 유형은 당신이 찾고있는 사람이 아닙니까 무엇을, 그러나이 기술은 유한 집합에 대한 모든 최종 공기를 검사 할 때 매우 강력합니다.

--Original Oct 2 '14 at 15:37 답변-

인용 한 그의 논문을 따르는 브렌트 요지의 논문을 살펴보십시오. http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.