컴퓨터 과학에서의 분류 vs. '실제'세계에서의 분류


87

나는 소프트웨어의 분류 알고리즘과 O(nlogn)장애물을 극복 할 수있는 가능한 방법에 대해 생각하고있었습니다 . 실용적인 의미에서 더 빨리 정렬하는 것이 가능하지 않다고 생각하므로 그렇게 생각하지 마십시오.

즉, 거의 모든 정렬 알고리즘에서 소프트웨어는 각 요소의 위치를 ​​알아야합니다. 그렇지 않으면 정렬 기준에 따라 각 요소를 배치 할 위치를 어떻게 알 수 있습니까?

그러나이 생각을 현실 세계와 교차 시켰을 때 원심 분리기는 분자를 밀도별로 '분류'할 때 각 분자가 어떤 위치에 있는지 전혀 모릅니다. 사실, 각 분자의 위치는 신경 쓰지 않습니다. 그러나 각 분자가 밀도와 중력 법칙을 따르기 때문에 비교적 짧은 시간에 수조 개의 항목을 분류 할 수 있습니다.

목록의 순서를 '강제'하기 위해 각 노드에 약간의 오버 헤드 (각 노드에 고정 된 일부 값 또는 방법)가있을 수 있습니까? 원심 분리기와 같은 것으로, 각 요소 만 다른 노드와 관련하여 공간에서 상대적 위치에 관심을 갖습니다. 아니면 이것은 계산의 일부 규칙을 위반합니까?

여기에서 제기 된 가장 큰 포인트 중 하나는 자연의 양자 역학적 효과와 그것이 모든 입자에 동시에 어떻게 동시에 적용되는지입니다.

아마도 고전적인 컴퓨터는 본질적으로 정렬을의 도메인으로 제한하는데, O(nlogn)양자 컴퓨터는 그 임계 값을 O(logn)병렬로 작동하는 알고리즘 으로 넘어갈 수 있습니다 .

원심 분리기가 기본적으로 병렬 기포 정렬 이라는 점은 정확 해 보이며 시간 복잡도가 O(n).

다음 생각은 자연이 분류 할 수 있다면 O(n)왜 컴퓨터는 할 수 없다는 것입니다.


44
Centrifuge는 대규모 병렬 버블 정렬 구현 일뿐입니다.
el.pescado

3
필요하면 n프로세서 (코어) 단지의 배열 분류하기 n쉽게 달성 할 수있는 항목 O(n)복잡성. 쓰라린 진실은 보통 2..10 코어 만있는 CPU에서 긴 배열 (수천 수백만 항목)을 정렬해야한다는 것입니다.
Dmitry Bychenko

24
n log n은 항목 쌍비교 하는 정렬에서 수행해야하는 비교 횟수입니다 . 정렬 알고리즘 이 항목 쌍을 비교할 필요는 없습니다 . 쌍대 비교를 수행하지 않는 정렬을 생각 해낼 수 있다면 n log n보다 빠르게 만들 수 있습니다.
Eric Lippert

7
당신이 놓친 것은 솔루션의 각 분자가 처리 장치라는 것입니다. 분자를 계산하는 에뮬레이터는 없습니다. 분자는 스스로 계산합니다. 유사한 컴퓨터에는 정렬 할 항목만큼 많은 프로세서 코어와 독립 메모리가 있습니다. O(n)그 자체로는 아무 것도 말해 주지 않습니다. 알고리즘을 유사한 제약 조건과 비교하고 유사한 아키텍처에서 실행하는 경우에만 유용합니다. 알고리즘 복잡성에 대한 입문 과정에서는 원심 분리기 나 실제 컴퓨터와 거의 관련이없는 매우 단순화 된 모델 "컴퓨터"를 사용합니다. :)
Luaan

4
이 cs.stackexchange.com에 속했기 때문에 보류 주제로이 질문을 닫으 투표 해요
로버트 프레이저을

답변:


71

편집 : 원심 분리기의 메커니즘을 오해했으며 비교를 수행하는 것으로 보입니다. 그러나 두 속성을 비교하는 대신 정렬되는 항목의 속성에서 작동하는 물리적 프로세스가 있습니다. 이 답변은 그 성격의 알고리즘을 다룹니다.

원심 분리기는 요소 간의 비교를 통해 실제로 작동하지 않는 정렬 메커니즘을 적용하지만 실제로는 각 개별 요소의 속성 ( '원심력')에 의해 격리됩니다. 일부 정렬 알고리즘, 특히 Radix Sort 가이 테마에 속합니다 . 이 정렬 알고리즘이 병렬화되면 원심 분리기의 예에 접근해야합니다.

다른 비 비교 정렬 알고리즘으로는 Bucket sortCounting Sort가 있습니다. Bucket 정렬은 원심 분리기의 일반적인 개념에도 적합하다는 것을 알 수 있습니다 (반경은 빈에 해당 할 수 있음).

각 요소가 격리 된 것으로 간주되는 또 다른 소위 '정렬 알고리즘'은 Sleep Sort 입니다. 여기서 원심력보다는 시간이 분류에 사용되는 크기로 작용합니다.


이것은 실제로 정답입니다. 빈 정렬 / 기수 정렬은 O (1) 시간에 빈과 입력에 액세스 할 수있는 경우 O (n) 복잡성을 갖습니다.
pjc50

5
"다른 사람이 바로 Sleep Sort를 생각합니까?"라고 물 으려고했습니다. Appearantly, 예 :
CompuChip

원심 분리기는 요소를 비교하여 작동합니다. 해시 함수는 (주로) 밀도입니다. 예를 들어, 프로판-공기 혼합물을 원심 분리하면 프로판이 경계로 분류됩니다. 그러나 프로판과 물을 원심 분리하면 프로판이 중앙으로 분류됩니다 (물이 더 밀도가 높음). 이 프로세스는 "버블 정렬"의 이름을 따온 물리적 프로세스와 거의 동일합니다.
Nat

SleepSort의 복잡성이 실제로 스케줄러의 복잡성에 의존하지 않습니까?
Morwenn

@Morwenn 이전 Linux 스케줄러는 O (1)이고 새 스케줄러는 O (log n)입니다. 이 두 가지 모두 수면의 지속적인 요인보다 더 큽니다
user1952500

35

계산 복잡성은 항상 일부 계산 모델과 관련하여 정의됩니다. 예를 들어, 알고리즘 O를 ( N 전형적인 컴퓨터)가있을 O (2 N 로 구현되는 경우) 브레인 퍽 .

원심 분리기 계산 모델에는 몇 가지 흥미로운 속성이 있습니다. 예를 들면 :

  • 임의의 병렬 처리를 지원합니다. 솔루션에있는 입자의 수에 관계없이 모두 동시에 정렬 할 수 있습니다.
  • 그것은 질량에 의해 엄격한 선형 종류의 입자를 제공하는 것이 아니라 매우 가까운 (저에너지) 근사치를 제공합니다.
  • 결과에서 개별 입자를 검사하는 것은 불가능합니다.
  • 다른 속성으로 입자를 정렬하는 것은 불가능합니다. 질량 만 지원됩니다.

우리가 범용 컴퓨팅 하드웨어에서 이와 같은 것을 구현할 능력이 없다는 점을 감안할 때, 모델은 실질적인 관련성이 없을 수 있습니다. 그러나 그것으로부터 배울 것이 있는지 알아보기 위해 여전히 검토 할 가치가 있습니다. 예를 들어 비 결정적 알고리즘양자 알고리즘 은 둘 다 오늘날 실제로 구현할 수 없지만 둘 다 활발한 연구 영역이었습니다.


자연 / 물리학은 일반적으로 병렬 적입니다 (그래서 직렬 컴퓨터에서 시뮬레이션하는 데 계산 비용이 너무 많이 듭니다). 그렇기 때문에 OP의 비유에는 큰 결함이 있습니다. 그래도 입자 / 분자가 테스트 튜브의 길이를 따라 이동하는 데는 시간이 걸리므로 테스트 튜브가 길수록 스레드 당 작업량이 더 많을수록 테스트 튜브가 더 넓을수록 평행도가 높아집니다. (그리고 원심 분리기는 테스트 튜브의 영역을 가로 질러 분류되지 않으므로 병합이없는 병렬 분류가 많지만 도중에 상호 작용이있을 수 있습니다. 병렬 컴퓨터의 실제 분류와는 달리 최종 병합)
Peter Cordes

29

트릭은 원심 분리기를 사용하여 목록을 정렬 할 확률 만 있다는 것입니다. 다른 실제 정렬 [인용 필요]과 마찬가지로 목록을 정렬 할 확률을 변경할 수 있지만 모든 값 (원자)을 확인하지 않고는 확신 할 수 없습니다.

"원심 분리기를 얼마나 오래 가동해야합니까?"라는 질문을 고려하십시오.
피코 초 동안 만 실행하면 샘플이 초기 상태보다 덜 정렬 될 수 있습니다. 또는 며칠 동안 실행하면 완전히 정렬 될 수 있습니다. 그러나 실제로 내용을 확인하지 않으면 알 수 없습니다.


그것은 꽤 좋은 지적입니다. 어떻게 아십니까? 다시 한 번, 제정 된 규칙이 충분하다면 알고 싶습니까? (즉, 무시할 수있을 정도로 확률을 낮게 설정 한 경우).
Kris

입자가 원심 분리기 끝에 도달하는 데 걸리는 시간을 항상 계산할 수 있습니다. 가속도 (w ^ 2 * r 여기서 w는 각속도)를 알고 시간을 계산할 수 있습니다.
user1952500

1
사실이지만 브라운 운동 , 다른 원자 힘 , 양자 물리학 (감사합니다, 작은 것들!)에 의해 혼동 되기 때문에 상태를 확인할 때까지 목록을 정렬했는지 완전히 확신 할 수 없습니다.
ti7

1
매우 작은 입자가 없으면 양자 효과를 무시할 수 있습니다. 입자가 매우 작은 경우 정렬 알고리즘이 작동 할 필요가 없으며 실제로 양자 효과로 인해 작동하는 데 의존 할 수 없습니다. 그리고 불확실성 원리로 인해 상태를 안정적으로 확인할 수 없습니다 (한 입자를 확인하면 다른 입자가 이동하게됩니다).
user1952500

1
@Kris 음, 우리는 원심 분리기가 완벽하게 분류되지 않는다는 것을 알고 있습니다. 우리는 혈액 원심 분리기에서 혈액 응고를 방지하는 것과 같은 실질적인 목적에 차이가 더 이상 중요하지 않을 때까지 계속합니다. 그러나 우라늄 원심 분리기는 훨씬 더 가까이있는 (분리하기 더 어려운) 품목을 분류해야하며, 원하는 재료를 소량 생산하기 위해 막대한 비용으로 계속해서 분류하는 거대한 시설이 필요합니다. 그리고 원심 분리기는 일정한 크기를 가지고 있고 분리 시간은 튜브의 폭에 비례합니다. 그리고 ... 당신은 O (n)이라고 말할 수 없습니다. 예!
Luaan

5

컴퓨터 기반 "주문"의 실제 예는 "드론 떼"로 알려진 서로 협력하여 작동하는 자율 드론입니다. 드론은 개인과 그룹으로 행동하고 소통하며 여러 표적을 추적 할 수 있습니다. 드론은 어떤 드론이 어떤 목표물을 따라갈 것인지, 그리고 드론 간의 충돌을 피해야 할 명백한 필요성을 종합적으로 결정합니다. 초기 버전은 대형을 유지하면서 웨이 포인트를 통과하는 드론 이었지만 대형은 바뀔 수 있습니다.

"정렬"의 경우, 드론은 특정 순서로 선이나 패턴을 형성하도록 프로그래밍 할 수 있으며 처음에는 임의의 순열 또는 모양으로 출시되며 집합 적으로 병렬로 정렬 된 선 또는 패턴을 빠르게 형성 할 수 있습니다.

컴퓨터 기반 정렬로 돌아가서, 한 가지 문제는 하나의 주 메모리 버스가 있고 많은 수의 개체가 메모리에서 병렬로 이동할 방법이 없다는 것입니다.

각 요소의 위치를 ​​알고

테이프 정렬의 경우 각 요소 (레코드)의 위치는 컴퓨터가 아니라 "테이프"에만 "알려져"있습니다. 테이프 기반 정렬은 한 번에 두 개의 요소와 테이프에서 실행 경계를 표시하는 방법 (파일 표시 또는 다른 크기의 레코드) 만 사용하면됩니다.


4

IMHO, 사람들은 log (n)를 지나치게 생각합니다. O (nlog (n))은 거의 O (n)입니다. 그리고 데이터를 읽으려면 O (n)이 필요합니다.

quicksort와 같은 많은 알고리즘은 요소를 정렬하는 매우 빠른 방법을 제공합니다. 실제로 매우 빠른 Quicksort 변형을 구현할 수 있습니다.

본질적으로 모든 물리적 시스템은 무한히 평행합니다. 모래 알갱이에 원자가 많을 수 있습니다. 자연은 각 원자의 각 전자가 있어야하는 위치를 파악할 수있는 충분한 계산 능력을 가지고 있습니다. 따라서 충분한 계산 리소스 (O (n) 프로세서)가 있다면 log (n) 시간에 n 개의 숫자를 정렬 할 수 있습니다.

댓글에서 :

  1. k 개의 요소가있는 물리적 프로세서가 주어지면 최대 O (k)의 병렬성을 달성 할 수 있습니다. n 개의 숫자를 임의로 처리하면 k와 관련된 속도로 처리됩니다. 또한이 문제를 물리적으로 공식화 할 수 있습니다. 인코딩하려는 숫자에 비례하는 가중치를 가진 n 개의 강철 볼을 만들 수 있으며, 이론상 원심 분리기로 해결할 수 있습니다. 그러나 여기서 사용하는 원자의 양은 n에 비례합니다. 표준의 경우 프로세서에 제한된 수의 원자가 있습니다.

  2. 이에 대해 생각하는 또 다른 방법은 각 번호에 작은 프로세서가 연결되어 있고 각 프로세서가 인접 장치와 통신 할 수 있다고 가정하면 모든 번호를 O (log (n)) 시간으로 정렬 할 수 있습니다.


그러나 계산은 자연의 물리적 특성을 사용하여 작업을 수행하는 것이 아닙니다. 여기서 양자 컴퓨팅으로 넘어갈 수 있지만 물리적으로 수행 할 수 있다면 계산적으로 수행 할 수 있어야합니까? 아마도 고전적인 계산은 O (nlogn)와 O (logn) 사이의 장애물입니다.
Kris

2
@Kris 정확히는 아닙니다. k 개의 요소가있는 물리적 프로세서가 주어지면 최대 O (k)의 병렬성을 달성 할 수 있습니다. n 개의 숫자를 임의로 처리하면 k와 관련된 속도로 처리됩니다. 또한이 문제를 물리적으로 공식화 할 수 있습니다. 인코딩하려는 숫자에 비례하는 가중치로 n 개의 강철 공을 만들 수 있으며, 이론상 원심 분리기로 해결할 수 있습니다. 그러나 여기서 사용하는 원자의 양은 n에 비례합니다. 표준의 경우 프로세서에 제한된 수의 원자가 있습니다.
ElKamina

이 제한은 QM 객체에도 적용됩니까? 그냥 호기심
크리스

1
@Kris 나는 QM을 충분히 깊이 이해하지 못합니다.
ElKamina

걱정 마! 나는 단지 매우 호기심이 많고 하하 잠을 잘 수없는 것 같습니다. 흥미로운 답변에 감사드립니다.
Kris

4

대학을 시작했을 때 고등학교 졸업 후 여름 사무실에서 일했습니다. 나는 AP 컴퓨터 과학, 다른 것들 중에서 분류와 검색을 공부했습니다 .

이 지식을 기억할 수있는 여러 물리적 시스템에 적용했습니다.

시작하려면 자연스러운 병합 정렬…

시스템은 파일 카드 크기의 떼어 내기를 포함하여 여러 부분으로 된 양식을 인쇄했으며,이 양식은 서랍에 보관해야했습니다.

나는 그것들의 더미로 시작하여 더미를 분류했습니다. 첫 번째 단계는 손에 쉽게 배치 할 수있을 정도로 5 개 정도를 집는 것입니다. 정렬 된 패킷을 아래에 놓고 각 스택을 십자형으로 분리하여 보관하십시오.

그런 다음 각 스택 쌍을 병합 하여 더 큰 스택을 생성합니다. 스택이 하나만 될 때까지 반복합니다.

… 완료 할 삽입 정렬

다음 카드는 동일한 열린 서랍에서 조금 더 아래에 있기 때문에 분류 된 카드를 정리하는 것이 더 쉽습니다.

기수 정렬

이 사람은 반복적으로 가르치려고 했음에도 불구하고 내가 어떻게 그렇게 빨리했는지 이해하지 못했습니다.

큰 상자의 체크 스텁 (천공 카드 크기)을 분류해야합니다. 큰 테이블에서 솔리테어를하는 것처럼 보입니다. 거래하고, 쌓고, 반복하세요.

일반적으로

30 년 전, 나는 당신이 무엇에 대해 물어보고 있는지 알아 차 렸습니다. 비교기록 처리에 상대적인 비용 과 캐싱 수준이 있기 때문에 아이디어가 물리적 시스템으로 매우 직접적으로 이전됩니다 .

잘 이해 된 등가물을 넘어서

나는 당신의 주제에 대한 에세이를 회상하고 그것은 스파게티 종류를 가져 왔습니다 . 키 값을 표시하기 위해 말린면의 길이를 다듬고 레코드 ID로 레이블을 지정합니다. 이것은 O (n)이며 각 항목을 한 번만 처리합니다.

그런 다음 번들을 잡고 테이블의 한쪽 끝을 탭합니다. 아래쪽 가장자리에 정렬되고 이제 정렬됩니다. 가장 긴 것을 사소하게 벗고 반복 할 수 있습니다. 판독 값도 O (n)입니다.

여기 "실제 세계"에서 알고리즘에 해당하지 않는 두 가지 일이 있습니다. 첫째, 가장자리 정렬은 병렬 작업입니다. 모든 데이터 항목은 프로세서이기도합니다 (물리 법칙이 적용됩니다). 따라서 일반적으로 사용 가능한 처리를 n으로 확장하여 기본적으로 고전적인 복잡성을 n의 요소로 나눕니다.

둘째, 가장자리를 정렬하면 정렬이 어떻게 이루어 집니까? 실제 정렬은, 비록 당신이 한 단계에서 가장 긴 발견 할 수있는 판독에 않은 가장 긴을 찾기 위해 그들 모두를 비교합니다. 다시, n의 계수로 나누면 가장 큰 것을 찾는 것은 이제 O (1)입니다.

또 다른 예는 아날로그 컴퓨팅을 사용하는 것입니다. 물리적 모델은 문제를 "즉시"해결하고 준비 작업은 O (n)입니다. 원칙적으로 계산은 준비된 항목 수가 아니라 상호 작용하는 구성 요소의 수에 따라 확장됩니다. 따라서 계산은 n²로 확장됩니다. 제가 생각하는 예는지도에 구멍을 뚫고 구멍을 통과하는 문자열에 가중치를 걸고 고리에 모든 문자열을 모아서 수행 된 가중 다중 요소 계산입니다.


스파게티 종류는 재미있게 읽었습니다. 나는 그것에 대해 생각하는 것을 즐겼지만 가장 긴 국수를 스캔하는 행동을 비판합니다. 국수를 스캔하기 때문에 이것은 실제로 O (1) 작업이 아닙니다. 1 만 개의 국수와 길이가 비슷한 몇 개를 상상해보십시오. 이것은 O (1) "눈동자"작업이 아닙니다. 실제로 가장 긴면을 찾으려면 분류되지 않은면을 모두 스캔해야합니다.
ThisClark

손바닥을 뭉치 전체에 걸쳐 놓고 손에 닿는 가장 큰면 하나를 잡아 당겨 모든면을 "스캔"할 수 있습니다. 면의 길이가 매우 가까우면 더 정확한 "손"표면을 사용하여 가장 큰면을 잡으십시오. 면은 선택 정렬과 같이 연속적으로 선택되지 않고 한꺼번에 선택되므로 O (n) "컴퓨팅"전력을 사용할 수 있습니다.
Bradd Szonye

1
@ThisClark 당신은 더 정확한 지그가 필요합니다 : 국수를 정렬하는 바닥의 정지 점과 평행 한 평평한 평면. 한면 (가장 높은면)을 만져 압축 상태로 놓을 때까지 조심스럽게 내립니다. 면의 높이와 모든면의 비교는 그면에 의해 병렬 이루어집니다 . 더 높은 계수가 필요하다고 제안하고 있지만 그 주장은 Big-O를 변경하지 않습니다.
JDługosz

3

정렬은 여전히 ​​총 ​​시간 O (n)입니다. 그것보다 더 빠르다는 것은 Parallelization 때문입니다 .

원심 분리기 는 n 개의 코어에 대해 병렬화 된 n 개의 원자 버킷 으로 볼 수 있습니다 (각 원자는 프로세서 역할을 함).

병렬화를 통해 정렬 속도를 높일 수 있지만 프로세서 수가 제한되어 있고 O (n / C)는 여전히 O (n) (CPU의 코어가 10 개 미만이고 GPU가 6000 미만)이기 때문에 상수 요소로만 정렬 할 수 있습니다.


2

원심 분리기는 노드를 분류하는 것이 아니라 노드에 힘을 가한 다음 병렬로 반응합니다. 따라서 각 노드가 "밀도"에 따라 위아래로 병렬로 이동하는 버블 정렬을 구현하려면 원심 분리기 구현이 필요합니다.

실제 환경에서는 컴퓨터에서 실제 처리 장치의 수와 동일한 최대 실제 병렬 작업을 가질 수있는 매우 많은 양의 병렬 작업을 실행할 수 있습니다.

결국 두 노드에서 동시에 수정할 수 없기 때문에 요소 목록에 대한 액세스가 제한됩니다.


1

목록의 순서를 '강제'하기 위해 각 노드에 약간의 오버 헤드 (각 노드에 고정 된 일부 값 또는 방법)가있을 수 있습니까?

컴퓨터 프로그램을 사용하여 정렬 할 때 정렬되는 값의 속성을 선택합니다. 그것은 일반적으로 숫자 또는 알파벳 순서의 크기입니다.

원심 분리기와 같은 것, 각 요소 만 공간에서 상대적인 위치 (다른 노드와 관련하여)에 관심이 있음

이 비유는 저에게 간단한 거품 정렬을 적절하게 상기시킵니다. 각 반복에서 얼마나 작은 숫자가 버블 링되는지. 원심 분리기 논리처럼.

그래서 이에 답하기 위해 소프트웨어 기반 정렬에서 실제로 그런 종류의 작업을하지 않습니까?


1
내 생각 엔 당신이 맞다. 여기서 비유를 잃어버린 곳은 각 분자가 병렬로 작용한다는 것을 잊었다는 것입니다. 그래서, 그것은 ... 병렬 버블 정렬과 같은 것
크리스

1

먼저 두 가지 다른 컨텍스트를 비교하고 있습니다. 하나는 논리 (컴퓨터)이고 다른 하나는 물리학입니다. 지금까지 수학 공식을 사용하여 일부 부분을 모델링 할 수 있음이 입증되었으며 프로그래머는이 공식을 사용하여 시뮬레이션 할 수 있습니다. (일부) 논리 작업의 물리 (예 : 게임 엔진의 물리 엔진).

둘째 우리는 물리학에서 거의 불가능한 컴퓨터 (논리) 세계에 몇 가지 가능성을 가지고 있습니다. 예를 들어 메모리에 액세스하여 각 개체의 정확한 위치를 매번 찾을 수 있지만 물리학에서는 하이젠 베르크의 불확실성 원리 가 큰 문제 입니다.

셋째, 실제 세계에서 원심 분리기와 그 작동을 컴퓨터 세계에 매핑하려면 마치 누군가 (신)가 모든 물리 규칙이 적용된 슈퍼 컴퓨터를 제공하고 그 안에서 작은 분류를 수행하는 것과 같습니다 ( 원심 분리기를 사용하여) 정렬 문제가 o (n)에서 해결되었다고 말함으로써 백그라운드에서 진행되는 거대한 물리 시뮬레이션을 무시하고 있습니다.


0

또 다른 관점은 원심 분리기로 설명하는 내용이 "스파게티 정렬"( https://en.wikipedia.org/wiki/Spaghetti_sort ) 과 유사하다는 것 입니다. 다양한 길이의 조리되지 않은 스파게티 막대 상자가 있다고 가정 해 보겠습니다. 주먹으로 쥐고 손을 풀어 수직으로 내려 끝이 모두 수평 테이블에 놓 이도록합니다. 팔! 높이별로 정렬되어 있습니다. O (일정) 시간. (또는 O (n) 막대를 높이로 뽑아서 ... 스파게티 선반에 넣는 것을 포함한다면?)

스파게티 조각의 수는 O (상수)이지만 스파게티의 음속은 유한하기 때문에 가장 긴 가닥의 길이는 O (n)입니다. 따라서 공짜는 없습니다.


11 시간 전에 말했던 것과 똑같습니다. 그리고 저는 물리적 시스템이 어떻게 n 또는 n²로 나누고 알고리즘과 계산 모델을 유지할 수 있는지 설명했습니다.
JDługosz

0

고려 : "원심 분리기 정렬"이 정말 더 나은 확장 성입니까? 규모를 확장하면 어떻게되는지 생각해보십시오.

  • 시험관은 점점 길어 져야합니다.
  • 무거운 물건은 바닥에 도달하기 위해 더 멀리 이동해야합니다.
  • 관성 모멘트가 증가하여 분류 속도까지 가속하려면 더 많은 전력과 더 긴 시간이 필요합니다.

원심 분리기 분류와 관련된 다른 문제도 고려해 볼 가치가 있습니다. 예를 들어 좁은 크기 척도로만 작업 할 수 있습니다. 컴퓨터 정렬 알고리즘은 1에서 2 ^ 1024까지의 정수를 처리 할 수 ​​있습니다. 수소 원자의 2 ^ 1024 배나되는 것을 원심 분리기에 넣으면 블랙홀이되고 은하계가 파괴되었습니다. 알고리즘이 실패했습니다.

물론 여기서 진짜 대답은 다른 대답에서 언급했듯이 계산 복잡성이 일부 계산 모델에 상대적이라는 것입니다. 그리고 "원심 분리 정렬"은 RAM 모델, IO 모델 또는 멀티 테이프 튜링 머신과 같은 일반적인 계산 모델의 맥락에서 의미가 없습니다.

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