범주 이론 / 추상 대수와 계산 복잡성을 결합한 이론이 있습니까?


18

범주 이론과 추상 대수는 함수가 다른 함수와 결합 될 수있는 방법을 다룹니다. 복잡성 이론은 함수가 얼마나 어려운지를 다루고 있습니다. 나는 그들이 자연스럽게 짝을 이루는 것처럼 보이기 때문에 아무도이 연구 분야를 결합시키는 것을 보지 못했다는 것이 이상합니다. 아무도 전에 이것을 한 적이 있습니까?


동기를 부여하는 예로서, monoid를 살펴 보자. 연산이 모노 이드이면 연산을 병렬화 할 수 있다는 것은 잘 알려져 있습니다.

예를 들어, Haskell에서 덧셈이 다음과 같은 정수에 대한 단일체임을 간단히 정의 할 수 있습니다.

instance Monoid Int where
    mempty = 0
    mappend = (+)

이제 0에서 999의 합을 계산하려면 다음과 같이 순차적으로 수행 할 수 있습니다.

foldl1' (+) [0..999]

또는 우리는 그것을 동시에 할 수 있습니다

mconcat [0..999] -- for simplicity of the code, I'm ignoring that this doesn't *actually* run in parallel

그러나이 monoid를 병렬화하는 것은 mappend가 일정한 시간에 실행되기 때문에 의미가 있습니다. 그렇지 않은 경우 어떻게합니까? 예를 들어 목록은 mappend가 일정하지 않은 시간 (또는 공간!)으로 실행되지 않는 모노 아이드입니다. 이것이 Haskell에 기본 병렬 mconcat 기능이없는 이유입니다. 최선의 구현은 단일체의 복잡성에 달려 있습니다.


이 두 monoid의 차이점을 설명하는 편리한 방법이 있어야합니다. 그런 다음 이러한 차이점으로 코드에 주석을 달 수 있고 프로그램이 모노 이드의 복잡성에 따라 사용할 최상의 알고리즘을 자동으로 선택하도록해야합니다.


1
Haskell의 Type Integer는 다중 정밀도 정수이며, 여기에 더하기의 시간 복잡도는 입력 정수의 길이에 따라 달라 지므로 Integer의 Monoid 인스턴스에서 mappend가 일정한 시간에 실행된다고 말하는 것은 오도됩니다.
이토 쓰요시

@TsuyoshiIto 당신이 맞습니다, 나는 Int를 사용하려고했습니다. 결정된.
Mike Izbicki

이 질문을 보셨습니까 ?
Kaveh

@Kaveh 나는 포인터에 대해 감사하지 않았다. 빠른 읽기를 통해 복잡성 클래스 자체에 대한 이론적 연구를 한 사람이 아무도없는 것처럼 들립니다 (그리고 그것이 의미하는 바가 무엇인지 또는 가치있는 목표인지에 대한 토론이 있습니다). 그래서 저는 제 질문의 첫 번째 부분에 거의 답을하고 대수와 복잡성 사이의 상호 작용을 남겨 둡니다.
Mike Izbicki

대수와 복잡성 이론 사이에는 많은 상호 작용이 있습니다. 대수적 개념과 기법을 복잡성에 적용하고 적용하는 "대수 복잡성 이론"이라는 제목의 책도 있습니다. 그리고 대수학에 복잡한 이론을 적용한 광범위한 연구도 있습니다. 답변을 얻으려면 좀 더 구체적이어야합니다.
Kaveh

답변:


12

[계산의 복잡성과 범주 이론]은 그런 자연적인 쌍처럼 보입니다.

연구 분야로서 계산의 복잡성이 두드러진다는 점을 감안할 때, 만약 그들이 자연적인 침대 동료라면 누군가가 이미 연결을 맺었을 것입니까?

사나운 추측. 왜 계산 복잡성의 범주 적 렌더링이 어려운지에 대한 독자들의 생각을 들려 드리겠습니다. 아마도 범주 이론의 핵심 개념 클러스터는 보편적 인 구성 / 속성 (관련 기능 장치, 자연 변환, 부속 장치 등)을 중심으로하고 있습니다. 수학적 구성이 보편적 인 속성을 가지고 있음을 보여 주면 많은 통찰력을 얻을 수 있습니다. 따라서 계산 복잡성에 대한 범주 적 접근 방식을 원한다면 편리한 범주를 찾고 해당 범주를 사용하는 보편적 구성으로 복잡도 이론 (예 : LOGSPACE 또는 NP-hardness)의 주요 개념을 제시 할 수 있어야합니다. 이것은 아직 이루어지지 않았으며, 이것이 정말로 어려운 문제이기 때문이라고 생각합니다.

T=T1T2T3Ti,1 . 대신 컨트롤 (FSM)과 테이프의 두 가지 구성 요소를 별도로 지정하여 TM을 구성합니다. 컨트롤과 테이프 모두 좋은 대수학을 가지고 있지 않습니다.

테이프를 먼저 살펴 보자. 테이프를 구성하는 몇 가지 자연스러운 방법이 있지만 TM의 구성 적 설명에는 효과가없는 것으로 보입니다.

  • 서수 첨가처럼 함께 붙입니다. 이것은 테이프가 무한하기 때문에 올바른 개념이 아닙니다. 그리고 서수를 추가하는 것처럼 그것들을 서로 붙임으로써 유한 계산 능력을 넘어서는 무한 계산 /과 계산으로 이어지는 무한 무한 계산을 가져옵니다. 실현 가능한 계산.

  • 병렬로 스틱 이 3 헤드 기계 6 헤드 기계로 변신 예. 이것은 컴포넌트 머신들이 어떻게 상호 작용 하는지를 알려주지 않습니다.

  • 인터리브 테이프. 이 접근법의 한 가지 문제점은 표준 인터리빙이 무엇인지 확실하지 않다는 것입니다. 또한 인터리빙은 기존 컨트롤을 혼동 시키며 특정 테이프 레이아웃에 맞게 미세 조정되는 경향이 있습니다. 따라서 제어를 직접 재사용 할 수 없습니다.

π

대체로 우리는 계산 복잡성의 대수적 / 범주 적 처리를 상당히 멀리 형성하고 있으며, 거기에 도달하려면 몇 가지 개념적 진보가 필요합니다.


λπλπαλπ


튜링 머신의 구성은 추상적 컴퓨터 프로그램이라고 생각하면 상당히 분명합니다. 프로그램을 작성하는 자연스러운 방법은 하나를 다른 프로그램의 서브 프로그램으로 호출하는 것입니다. 보다 일반적으로, 각 프로그램은 특정 형식의 입력을 받아들이고 다른 형식의 문자열을 출력하여 다른 기능으로 공급 될 수있는 유한 시간 및 공간 함수로 계산할 수 있습니다. 일부 가비지 입력으로 인해 가비지 출력이 발생하거나 할당 된 시간과 공간에서 일부 기능이 실행되지 않을 수 있으며,이 경우 전체 프로그램이 충돌 할 수 있습니다.
Anton Fetisov

분명히 이런 방식으로 모든 프로그램을 구성 할 수있는 것은 아니며, 이는 자연스럽게 우리를 TM의 범주로 이끈다. 또한 시간 공간 무제한 TM의 개념을 포기해야 할 수도 있습니다. 어쨌든 실제로는 불가능합니다. 이 구조를 포착 한 출판 된 개념이 있습니까?
Anton Fetisov

@AntonFetisov 세부 사항을 적어 보셨습니까? 예쁘지 않아요.
Martin Berger

2

형식 언어 간의 동형에 대한 이 답변 은 코드 이론의 대수적 결과와 범주 이론의 개념을 결합하여 형식 언어와 복잡성 클래스 간의 등가성 및 동형에 대한 가능한 개념을 조사합니다.

이러한 결과에 대한 저의 해석은 단어의 동기화 포인트가 결정 론적이며 명확한 비결정론 적 변환기에 대해 다르고 결정 론적 순방향 변환기와 결정 론적 역방향 변환기 간에도 다르다는 것입니다. 동기화 지점에 대한 이러한 관점을 취하면 이러한 결과를 시각적으로 푸시 다운 언어에 연결할 수 있으며, 통화 및 반환 외에 공백이나 쉼표와 같은 간단한 구분 기호도 고려해야하는지에 대한 의문이 제기됩니다. (내 추측은 분리 된 리턴 + 호출로 구분 기호를 에뮬레이트 할 수 있지만 하나 대신 두 개의 기호가 필요하기 때문에 이것이 충분한 지 여부는 확실하지 않습니다. 구분 기호 만 있지만 눈에 띄지 않는 언어가있을 수도 있습니다. 통화 또는 반환 기호.)


나는 이것을 커뮤니티 위키로 만들었습니다. 왜냐하면 그것은 내 자신의 질문에 대한 내 자신의 답변과 연결되어 있기 때문입니다. 나는 내가 가장 좋아하는 것을 "청소"하고 있었고,이 짧은 대답을 쓰는 것이 가장 쉬운 방법이었습니다.
토마스 클림 펠
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.