알고리즘 세트의 카디널리티


15

토론에서 누군가 특정 문제에 접근하기위한 최소한 연속체가있을 수 있다는 결론을 내 렸습니다. 구체적인 문제는 거래 전략 (알고리즘이 아니라 전략) 이었지만 내 질문의 요점 옆에 있다고 생각합니다.

이것은 알고리즘 세트의 카디널리티에 대해 생각하게했습니다. 나는 조금 둘러보고 있지만 아무것도 찾지 못했습니다. 나는 튜링 머신이 유한 한 알파벳 세트로 작동하고 테이프를 색인 할 수 있어야하므로 셀 수없는 알고리즘을 가질 수 없다고 생각했습니다. 내 이론은 녹슨 것이 틀림 없다. 그래서 나의 추론이 타당하지 않다고 확신 할 수는없고 아마도 그것을 증명할 수는 없지만 흥미로운 생각이다.

알고리즘 세트의 카디널리티는 무엇입니까?


1
Yuval Filmus가 언급했듯이 튜링 머신은 무수히 많습니다. 그러나 부울 값 함수를 계산할 수 있기 때문에 부울 회로의 불균일 한 많은 계열이 연속체로 존재합니다. 그러나 그것은 아마도 당신이 "알고리즘"의 의미가 아닙니다.
복원 Monica Monica

답변:


28

알고리즘은 일부 작업을 수행하기위한 유한 한 일련의 서면 명령으로 비공식적으로 설명됩니다. 더 공식적으로는 튜링 머신으로 식별되지만 컴퓨터 프로그램으로 동일하게 설명 할 수 있습니다.

정확한 형식은 중요하지 않지만 근본적인 요점은 각 알고리즘을 유한 문자 시퀀스로 기록 할 수 있다는 것입니다. 여기서 문자는 로마자, ASCII 또는 0과 1과 같은 유한 세트에서 선택됩니다. 간단히하기 위해 0과 1을 가정 해 봅시다. 0과 1의 시퀀스는 이진수로 작성된 자연수입니다. 이는 모든 알고리즘이 자연수로 표현 될 수 있기 때문에 최대 수의 무한한 알고리즘이 존재 함을 의미합니다.

완전한 크레딧을 얻으려면 일부 자연수는 유효한 프로그램을 코딩하지 않을 수 있으므로 자연수보다 알고리즘이 적을 수 있습니다. (이 두 개의 서로 다른 자연수가 동일한 알고리즘을 표현하는 것이 가능하다면 보너스 신용 들어, 당신은 또한 궁금 할 것이다.) 그러나 print 1, print 2, print 3등 모든 알고리즘과 모두 다른이, 그래서 countably 적어도 무한히 많은 알고리즘이 있습니다.

따라서 우리는 알고리즘 세트가 셀 수없이 무한하다는 결론을 내립니다.


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
Gilles 'SO- 악마 그만해'

10

알고리즘 세트는 셀 수없이 무한합니다. 각 알고리즘에는 Turing machine이라고하는 유한 한 설명이 있기 때문입니다.

알고리즘에 유한 한 설명이 있다는 사실은 하나의 알고리즘을 다른 알고리즘에 입력 할 수있게하며 이는 계산 가능성 이론의 기초입니다. 예를 들어 정지 문제를 공식화 할 수 있습니다.


7

특정 문제에 접근하기위한 최소한 연속체 수의 전략

"연속 (Continuum)"은 실제 숫자를 의미하는 것으로 추정됩니다. "적어도"를 그 단어와 함께 사용하는 것은 터무니없이 위에 있습니다. 입에서 약간 혀를 내려면 : 셀 수없이 무한대는 꽤 크지 만 셀 수없이 무한대는 ... 큰 것보다 큽니다. 훨씬 더 그렇습니다. 틀림없이.

창 밖으로 던져 버리겠습니다. 우리가 어떤 종류의 무한대를 다루는 지 보는 것은 간단합니다 (친구가 이론적 인 컴퓨터 과학에 대해 들어 본 적이 없어도 직관적입니다).

  • 모든 알고리즘은 튜링 완료 언어로 구현할 수 있습니다. 실제 언어 (자바, C, ...)의 좋아하는 독을 골라서 이것을 조금 미스터리 화하십시오. 이들 모두는 누구나 생각해 볼 수있는 이론적 인 알고리즘 세트와 동일합니다. 모든 알고리즘 자체는 유한하며, 즉 적을 때 무한히 많은 기호를 사용하는 알고리즘은 없습니다.
  • 복잡한 튜링 머신에 대해 생각하지 마십시오. 선택한 언어는 간단한 파일을 사용하여 소스 코드를 저장합니다. 모든 파일은 작은 숫자 (일명 바이트)의 모음입니다. 중요한 것은이 숫자가 정수가 아니라 정수라는 것이 가장 중요합니다. (순수하고 이론적 체제를 유지하려는 경우 "바이트"라는 단어를 "기호"로 바꾸면 아무 변화가 없습니다.) 여러 파일 (및 라이브러리에 분산 된 큰 프로그램이 두려운 경우 ) , 기타 항목)으로 압축 한 다음 압축 된 단일 아카이브 (예 : 단일 파일)로 압축합니다.
  • 이제 모든 파일에 단일 정수 번호를 사전에 지정할 수 있습니다 . 우리는 단순히 파일의 비트 / 바이트의 전체 혼란을 차례로 작성하고 바이너리로 표현되는 매우 큰 숫자로 끝납니다. 먼 옛날 사람들은 실제로 이렇게했습니다. 그들은 컴파일 된 이진 프로그램을 잡지에 긴 16 진수 목록으로 인쇄했습니다. 당신은 그것들을 입력 할 것이지만 그것들을 숫자 이외의 것으로 보지 마십시오 (종종 쉽게 입력하기 위해 8 또는 16 자리 세트로 편리하게 그룹화 됨).
  • 따라서 모든 프로그램은 임의로 큰 숫자이지만 정수로 나타낼 수 있습니다. 다른 방법으로는 라운드가 잘 작동합니다. 모든 정수는 즉시 그리고 사소하게 파일로 전송되어 컴파일러에서 발생할 수 있습니다 (분명히 그중 일부만 유효한 프로그램이지만 지금은 중요하지 않습니다).
  • 결국, 프로그램과 알고리즘은 정수의 부분 집합입니다. 따라서 셀 수없이 많은 수가 존재할 수 있습니다.
  • NB, 단일 알고리즘에 대해 여러 가지 다른 구현이 있다는 사실은 우리가 선호하는 것입니다. 즉, 많은 정수가 동일한 알고리즘으로 응축됩니다 (서로 다른 표현). 따라서 계산 가능한 무한대가 이미 가장 작은 종류의 무한대가 아닌 경우 알고리즘 수는 훨씬 작지만 확실히 클 수는 없습니다 (즉, 셀 수 없음).

구체적인 문제는 거래 전략 (알고리즘이 아니라 전략)이었습니다.

나는 당신의 친구가 "전략"으로 무엇을 의미하는지 모른다. 나는 그가 알고리즘과 같은 것이지만 컴퓨터를 해킹하기에 충분히 상세하게 공식화되지 않은 것을 의미한다고 가정합니다. 아니면 어떻게 실행하는 동안 인간의 "직관"에 의존합니까? 그렇다면, 이것들은 관련이없는 세부 사항 일뿐입니다. 인류는 아직 CS에서 사용한다는 의미에서 "알고리즘"보다 더 강력하거나 더 큰 프로세스에 대한 어떠한 종류의 설명도 찾지 못했습니다.


3
Re : " 'Continuum'은 아마도 실제 숫자를 의미하는 것으로 추정됩니다. 그 단어와 함께 '적어도'를 사용하는 것은 터무니없이 위에 있습니다." . 실수보다 실수 세트가 더 많으므로 연속체보다 큰 세트에 대해 이야기하는 것이 일반적입니다.
ruakh

6

컴퓨터 과학에서 기본적으로 사실 인 괴델 넘버링 (Gödel Numbering )을 참조하십시오 .

알고리즘은 계산이 가능하며 공식 시스템의 모든 세트를 검증하는 알고리즘이 존재하지 않음을 쉽게 알 수 있습니다 (문제에 진실 값을 할당). 이는 일련의 문제를 부울 값에 매핑하는 모든 함수에 알고리즘을 할당하는 것과 같습니다. 그러나 이러한 기능 세트는 계산할 수 없습니다 (사소한 문제 세트의 전력 세트와 동일한 카디널리티로 계산할 수 없음).

이것이 알고리즘이 왜 어떤 함수보다 "강력하지 않아야"하는가에 대한 직관을 제공하기를 바랍니다.


2

전략을 알고리즘으로 구현할 수 있어야한다는 요구 사항으로 시작하지 않고 실제 이산화 효과를 무시하는 경우, 예를 들어 다음을 매개 변수화 된 거래 전략으로 채택 할 수 있습니다.

abab

ab


0

이진 *으로 작성된 컴퓨터 프로그램으로 알고리즘을 생각하면 알고리즘의 수는 (정수) 이진수의 수입니다. 따라서 알고리즘의 카디널리티는 정수의 카디널리티입니다.

* 터링 머신이 모든 알고리즘을 실행할 수 있고 컴퓨터가 모든 프로그램 터링 머신을 실행할 수 있다는 증거는이 답변을 불필요하게 길게 만듭니다. 전자는 알고리즘의 정의에 달려 있지만 계산할 수없는 거래 전략을 사용하고 있다고 생각하지 않습니다.


1
기존 답변에 무엇이 추가됩니까?
David Richerby

"튜링 머신이 모든 알고리즘을 실행할 수 있다는 증거는 ...이 답변을 불필요하게 길게 만들 수 있습니다." 당신이 정말로 증명할 수 없기 때문에 그것은 대답은 불가능 할 것 교회 튜링의 논문
존 콜맨

@DavidRicherby 그것은 간결성을 추가합니다.
user558317

1
@JohnColeman 증거없이 증명의 불가능 성을 주장? 나는 a) OP는 아마 신경 쓰지 않을 것임을 의미했다. b) 그것은 정의의 문제이기 때문이다. 이 문제는 튜링 머신이 유한 알파벳 세트로 작동하기 때문에 테이프를 색인 할 수 있어야하므로 셀 수없이 많은 수의 알고리즘을 가질 수 없습니다. "
user558317

0

다른 대답은 이미 표준 계산 모델 (Turing machines, lambda calculus 등)에서 알고리즘 세트가 셀 수없이 무한하다는 것을 이미 설명했습니다.

그러나 알고리즘 세트가 셀 수없이 무한한 다른 이론적 계산 모델이 있습니다. 예를 들어, Blum–Shub–Smale 시스템 에는 셀 수없이 무한한 명령어 세트 1 이 있으므로 알고리즘 세트도 셀 수없이 무한합니다.


1 정확히 말하면 명령어 세트 자체는 유한하지만 셀 수없이 무한한 세트 (합리적 함수)를 사용하여 매개 변수화됩니다.


합리적인 함수는 셀 수 없습니까?
벤 밀우드

@BenMillwood 이것이 왜 그런지에 대한 증거 를 간략하게 스케치 할 수 있습니까 ?
Mark C

x0Rf:xx0

아, 상수도 합리적이어야한다고 가정했습니다. 그럼 신경 쓰지 마
벤 밀우드

-1

튜링 기계는 유한 알파벳 세트로 작동하며 테이프는 색인 가능해야하므로 계산 가능해야합니다.

특정 크기가 주어지면 튜링 기계는 무한히 많으며 크기는 매우 많습니다. 유한 한 개수의 셀 수있는 숫자 세트를 셀 수 있습니다. 알파벳의 크기는 튜링 기계 수의 한 요소이지만 테이프의 크기는 그렇지 않습니다. 알파벳에 셀 수없이 많은 문자가 허용 된 경우에는 셀 수없이 많은 기계가 있습니다 (각 실수는 일련의 기호로 인코딩 될 수 있음).

.5.5


당신이하려는 일을 이해하지 못했습니다. 문제는 알고리즘의 수에 관한 것이며 알고리즘은 입력이 아닌 Turing 머신입니다. 시작시 테이프에 공백이 아닌 많은 문자를 허용해도 알고리즘 수에는 영향을 미치지 않으며 종료 실행은 입력의 유한 접두사 만 읽을 수 있습니다. 한편, 두 번째 단락은 알고리즘과 수학 함수를 혼동합니다. 셀 수없이 많은 수의 실수를 제외하고는소수점 이하 자릿수의 숫자입니다.
David Richerby

어쨌든 셀 수없이 많은 알고리즘이 있다는 것은 무엇을 의미합니까? 당신은 셀 수없이 많이 쓸 수 있습니다. 어떤 의미에서 알고리즘을 작성할 수없는 것이 있습니까?
David Richerby

@DavidRicherby 그래, 몇 가지가 섞여있다. 그러나 선택의 순서를 지칭하기 위해 일반적인 의미에서 "알고리즘"을 사용할 수 있습니다. 그리고 그런 의미에서, 입력에 기초하여 숫자를 선택하는 것은 계산할 수 없지만 "알고리즘"입니다.
Accumulation

컴퓨터 과학에서 "알고리즘"과 "계산 가능"은 동일합니다. 알고리즘은 튜링 머신입니다.
David Richerby
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.