'상수 무시'의 일반적인 컴퓨터 과학 사용이 고전 컴퓨팅과 양자 컴퓨팅을 비교할 때 유용합니까?


14

다니엘 상크 (Daniel Sank ) 는 다항식 시간 알고리즘을 인정하는 문제에 대한 10 8지속적인 속도 향상 이 빈약 하다는 나의 의견 에 대답하면서 언급 했다.108

복잡성 이론은 무한한 크기 스케일링 한계에 너무 집착합니다. 실제 생활에서 중요한 것은 문제에 대한 답변을 얼마나 빨리 받는가입니다.

컴퓨터 과학에서 알고리즘의 상수를 무시하는 것이 일반적이며, 결국 이것은 다소 잘 작동하는 것으로 나타났습니다. (나는 좋은 실제 알고리즘 있다는 것을 의미 한다. 나는 당신이 연구자들이 이것에 다소 큰 영향을 미쳤던 (이론적) 알고리즘을 내게 부여하기를 바란다!)

그러나 나는 이것이 현재와는 약간 다른 상황이라는 것을 이해합니다.

  1. 동일한 컴퓨터에서 실행되는 두 개의 알고리즘을 비교하는 것이 아니라 두 개의 매우 다른 컴퓨터 에서 두 개의 (약간) 다른 알고리즘을 비교 합니다.
  2. 우리는 현재 기존의 성능 측정이 불충분 한 양자 컴퓨터 와 협력하고 있습니다.

특히 알고리즘 분석 방법 은 단지 방법 일뿐 입니다. 근본적으로 새로운 컴퓨팅 방법이 현재의 성능 평가 방법을 비판적으로 검토해야한다고 생각합니다.

그래서 내 질문은 :

양자 컴퓨터의 알고리즘과 기존 컴퓨터의 알고리즘의 성능을 비교할 때 상수를 '무시'하는 것이 좋은 습관입니까?


상수를 무시하는 것이 고전적인 컴퓨팅에서 항상 좋은 아이디어는 아닙니다. 이것은 알고리즘 리소스 스케일링에 대해 어떻게 생각해야하는지에 대한 질문이 아닌 양자 컴퓨팅 질문입니까? 즉, 계산을 실행하는 데 필요한 시간이나 다른 리소스에 대해 이야기 할 때 계산이 양자인지 클래식인지 여부는 1 억 속도의 요소에 관심이 있는지의 여부와 관련이없는 것 같습니다.
DanielSank

1
@DanielSank 앞서 언급했듯이 알고리즘 분석에서 상수를 무시하는 것은 고전적인 컴퓨팅에서 잘 작동했습니다. 또한 알고리즘 연구자들 에게 사실상의 표준 이다. 나는 분명히 동의하지 않는 모든 알고리즘 연구자 들 에 대해 듣고 싶다 . 내가이 질문을하는 주된 이유는 '상수를 무시하는 것'이 거의 모든 알고리즘 연구원이 아닌 규칙보다 더 중요하기 때문입니다. 이 사이트에 유용한 기고자 같은 사람들이있을 것이라 확신하므로, 양자와 고전을 비교할 때 그러한 사고가 조정되어야하는지 아는 것이 흥미로울 수 있습니다.
이산 도마뱀

3
이 질문에 대한 흥미로운 대화가 여기 있습니다 .
DanielSank

답변:


9

'상수 무시'의 일반적인 컴퓨터 과학 사용은 약간의 마사지로 다양한 종류의 하드웨어 아키텍처 또는 소프트웨어의 성능 차이를 무시할 수있는 경우에만 유용합니다. 그러나 고전적인 계산에서도 어려운 문제 나 큰 문제를 해결하려면 아키텍처의 영향 (캐싱 동작, 하드 디스크 사용)을 알고 있어야합니다.

상수를 무시하는 관행은 구현 관점에서 (지속적으로 확인된다는 의미에서) 관행이 아닙니다. 그것은 주로 구성에 따라 잘 작동하고 순수한 수학에 가까운 방식으로 간단한 특성을 인정하는 알고리즘 연구에 대한 접근에 관심이 있습니다. Turing Machines의 속도 향상 이론은 합리적인 정의가 합리적인 이론에 도달하기 위해 문제의 복잡성을 너무 정확하게 고정시킬 수는 없다는 것을 의미했습니다. 게다가 어려운 문제에 대한 좋은 알고리즘을 찾기위한 노력에서 상수 요소는 수학적으로 흥미로운 부분이 아니 었습니다 ...

알고리즘 연구에 대한이보다 추상적 인 접근은 대체로 유익했습니다. 그러나 이제 우리는 두 가지 계산 모델이있는 상황에 직면 해 있습니다.

  • 하나는 진보 된 기술 성숙 상태에있다 (고전적인 계산). 과
  • 하나는 매우 미성숙 상태이지만, 상당한 점근 개선 (양자 계산)을 초래할 수있는 이론적 모델을 실현하려고합니다.

이 경우, 상수 요인을주의 깊게 설명 하거나 고려 하지 않고 점근 적 이점을 고려하는 것이 합리적 일지 묻습니다 . 확장 가능한 양자 컴퓨팅을 수행하기 위해 추가 노력이 필요할 수 있기 때문에, 양자 알고리즘을 실현하기위한 모든 오버 헤드가 고려되면 이론적 성능에서 스칼라 인자뿐만 아니라 다항식 "스피드 업"이 제거 될 수 있습니다.

이 초기에는 양자 아키텍처에 대한 다양한 접근 방식과 성능의 차이가있을 수 있습니다. 이것은 폰 노이만 머신이나 고도로 분산 된 네트워크에서 기존의 계산을 수행하든 상관없이 알고리즘이 점근 분석보다 얼마나 잘 수행되는지에 대해 아키텍처 선택을 중요하게 할 수 있습니다. 상당한 지연 시간.

실제 계산에서 실제로 중요한 것은 알고리즘뿐만 아니라 알고리즘의 구현입니다. 알고리즘 구현은 특정 아키텍처에서 특정 방식으로 구현 된 알고리즘입니다. 상수 요인을 무시하는 점근 분석의 일반적인 관행은 알고리즘 성능의 차이에 대한 체계적이고 수학적 이유에주의를 기울일 수 있으며 실제 성능을 지배 할 정도로 구조적 차이가 크지 않은 경우에 실제로 동기 부여됩니다 .

양자 기술과 관련하여 우리는 실제 상황에서 일정한 요소를 안전하게 광택시킬 수있는 행복한 상황에 있지 않습니다. 그러나 언젠가는 그렇게 할 수있을 것입니다. 이것은 양자 정보 기술의 긴 게임입니다. 지금까지 양자 정보 기술에 관한 한, 학계 컴퓨터 과학자들이 지금까지 해왔 던 거의 유일한 게임입니다. 양자 기술이 기반을 잡는 그날을 예상하면 양자 알고리즘의 성능에 대한 한 줄의 조사 로서 점근 분석을 계속 추구하는 것이 좋습니다 .


그래서, 결론에서, 당신은 '상수를 버리고하지'찬성 것으로 보인다 지금 우리가 무대에 아직도있는 동안, 구현이 매우 중요합니다. 흥미 롭군 나는 당신의 추론을 좋아하지만 약간 동의하지 않습니다. 나는 곧 내 자신의 답변으로 이것을 확장 할 것입니다.
이산는 도마뱀

1
@ Discretelizard : 상수가 실질적인 차이를 만드는 상황에서 상수를 버리지 않는 것을 선호합니다. 분명히 1e8과 같은 상수도 고전적인 계산에서 실제로 중요합니다. 그러나 우리는 매우 흥미로운 다른 세부 사항을 찾기 위해 그러한 상수를 무시할 수 있습니다. 그러나 1e8이 고전적 계산 내에서 문제보다 오늘날의 양자 기술과 고전 기술 사이의 비교에서 더 중요하다는 것도 사실입니다.
Niel de Beaudrap

5

첫째, CMOS 하드웨어 알고리즘과 같이 양자 장치의 스케일링 분석은 없습니다. 그래서 에 대해 이야기영형(에프[])

1010

300


2

양자 계산을 고전 계산과 비교할 때 상수 요소를 무시할 수 없습니다. 너무 큽니다.

예를 들어 작년에 발표 한 일부 슬라이드 의 이미지는 다음과 같습니다.

양자와 게이트

바닥에있는 것은 마법 상태 공장입니다. 그들은 150K 물리적 큐 비트의 풋 프린트를 가지고 있습니다. AND 게이트는 0.6 밀리 초 동안 150K 큐 비트를 사용하기 때문에 양자 AND 게이트의 시공간 볼륨이 90 큐 비트 초 정도 인 것으로 가정합니다.

동료의 목표 중 하나는 오류 수정을 수행 할 때 100 큐 비트 당 1 CPU를 사용하는 것입니다. 따라서 90 qubit 초에는 0.9 cpu 초의 작업이 필요하다고 말할 수 있습니다. 우리는 양자 구조를 만들었습니다위의 이미지가 생성 된 이후 몇 배 더 효율적 으로 만들었습니다. 대신 0.1 cpu 초라고하겠습니다.

(이러한 추정에는 많은 가정이 있습니다. 어떤 종류의 아키텍처, 오류율 등 나는 단지 큰 아이디어를 전달하려고합니다.)

64 비트 추가를 수행하려면 63 개의 AND 게이트가 필요합니다. 63 * 0.1 CPU 초 ~ = 6 CPU 초. 양자 적으로, 64 비트 추가 비용은 CPU 초보다 더 비쌉니다. 일반적으로 64 비트 추가 비용은 CPU 나노초보다 저렴합니다. 여기에는 100 억 개의 상수 계수 차이가 쉽게 있습니다. GPU와 같은 병렬 클래식 컴퓨터와 비교하면 숫자가 더 나빠집니다. 숫자가 많은 상수 요소는 무시할 수 없습니다.

예를 들어, N 평가 대신 함수의 sqrt (N) 평가에서 함수에 대한 만족스러운 입력을 검색 할 수있는 Grover 알고리즘을 고려하십시오. 100 억의 일정한 요소를 더하고 양자 컴퓨터가 더 적은 평가를 요구하기 시작하는 위치를 해결하십시오.

>1010>1020

Grover의 알고리즘은 평가를 병렬화 할 수 없으며, 평가에는 적어도 하나의 AND 게이트가 필요하므로 기본적으로 검색에 수천만 년이 걸리면 CPU 시간 이점 만보기 시작합니다.

상수 요소를 훨씬 개선하지 않으면 그 어느 것도 유용한 것을 찾기 위해 Grover 검색을 사용하지 않을 것입니다. 현재 양자 대 고전적인 상황은 기하 급수적 인 이점이거나 흉상입니다.


1

다른 답변이 좋은 점을 제공하지만 여전히 약간 동의하지 않는다고 생각합니다. 그래서 저는이 시점에서 내 생각을 공유 할 것입니다.

요컨대, '있는 그대로'를 유지하는 것은 낭비되는 기회라고 생각합니다. 아마도 현재로서는 우리가 얻을 수있는 최선일 것이지만 이상적이지는 않습니다.

그러나 먼저 짧은 소풍이 필요하다고 생각합니다.

효과적인 알고리즘은 언제 있습니까?

Daniel Sank이 나에게 소수를 인수 분해하는 알고리즘이 있다면 어떻게해야하는지 물었을 때 106심각한 인스턴스의 테스트 세트에서 요인 속도를 높이기 위해 먼저 알고리즘 개선 때문 일지 모르지만 다른 요인 (기계 또는 구현) 때문인지 의심했습니다. 그러나 나는 지금 다른 반응을 보인다고 생각합니다. 밀리 초 내에 매우 많은 수를 고려할 수 있지만 매우 비효율적 인 간단한 알고리즘을 알려 드리겠습니다 .

  1. 세트를 (꽤 큰) 소수의.
  2. 계산 2, 정확히 두 가지 요소가있는 모든 복합 재료 세트 . 각 컴포지트마다 어떤 쌍의 프라임이 구성에 사용되는지 저장하십시오.
  3. 이제 인스턴스가 주어지면 2간단히 표에서 인수 분해를보고보고하십시오. 그렇지 않으면 '오류'를보고하십시오

입력이있을 때만 제대로 작동하기 때문에이 알고리즘이 쓰레기라는 것이 분명합니다. 2. 그러나 알고리즘을 블랙 박스로 지정 하고 입력을 통해서만 "일치로"테스트 할 때이를 확인할 수 있습니다.? 물론 많은 예제를 시험해 볼 수는 있지만 매우 쉽게 만들 수 있습니다. 입력에서 알고리즘이 효과가없는 매우 큰 2 (아마도 우리는 해시 맵이나 무언가를 사용하고 싶을 것입니다).

따라서 우리의 쓰레기 알고리즘이 우연히 '기적적인'속도 향상을 보이는 것처럼 보일 수 있습니다. 물론, 위험을 완화 할 수있는 많은 실험 설계 기법이 있지만, 여전히 실패하지만 더 많은 예제가 우리를 속일 수없는 더 영리한 '빠른'알고리즘이 있습니다! (또한 악의적 인 연구원이 없다고 가정 하므로 문제가 더욱 악화됩니다!)

그래서 나는 "더 나은 성능 메트릭이있을 때 나를 깨워 줘"라고 대답 할 것입니다.

그렇다면 어떻게 더 잘할 수 있습니까?

'블랙 박스'알고리즘을 모든 경우에 대해 테스트 할 여유가 있다면 위의 방법으로 속일 수 없습니다. 그러나 실제 상황에서는 불가능합니다. (이것은 이론적 모델에서 수행 할 수 있습니다!)

대신 우리가 할 수 있는 것은 매개 변수가있는 실행 시간 (일반적으로 입력 크기에 대한)에 대한 통계 가설 을 만들어 이것을 테스트하고, 가설을 조정하고 널을 거부하는 것이 합리적으로 보일 때까지 가설을 조정하고 다시 테스트하는 것입니다. (내가 무시하고있는 다른 요인이있을 수 있습니다. 실제로는 수학자입니다. 실험 설계는 내 전문 지식에 포함되지 않습니다)

매개 변수화에 대한 통계적 테스트의 장점 (예 : 알고리즘 영형()? )은 모델이 더 일반적 이므로 이전 섹션 에서처럼 '속임수'가 더 어렵다는 것입니다. 불가능하지는 않지만, 이것이 합리적인지에 대한 최소한의 통계적 주장은 정당화 될 수 있습니다.

그래서 상수로 무엇을해야합니까?

내가 생각 에만 "라는109 speedup, wow! "는이 경우를 처리하는 나쁜 방법입니다. 그러나이 결과를 완전히 무시하는 것도 좋지 않습니다.

나는 호기심 상수를 예외 로 간주하는 것이 가장 유용하다고 생각합니다 . 즉, 그 자체로 추가 조사가 필요하다는 주장입니다. 나는 단순히 '우리의 알고리즘은 X 시간이 걸린다'보다 더 일반적인 모델을 기반으로 가설을 만드는 것이 좋은 도구라고 생각합니다. 따라서 여기서 CS 관습을 간단히 받아 들일 수는 없지만 상수에 대한 '경멸'을 완전히 무시하는 것도 나쁜 생각입니다.

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