두 알고리즘이 언제“유사”하다고 말합니까?


16

나는 이론적으로 일하지 않지만, 나의 연구는 가끔씩 논문을 읽고 이해해야한다. 일단 (일련의) 결과를 이해하면 나는이 결과를 내가 함께 일하는 사람들과 논의하지만, 대부분 이론적으로는 일하지 않습니다. 그러한 토론 중 하나에서 다음과 같은 질문이 나왔습니다.

주어진 두 알고리즘이 "유사"하다고 언제 말합니까?

"유사"란 무엇을 의미합니까? 리뷰어를 혼란스럽게하거나 성가 시게하지 않고 논문에서 다음 주장 중 하나를 만들 수 있다면 두 알고리즘이 비슷하다고 말할 수 있습니다 (더 나은 정의를 환영합니다).

주장 1. " 알고리즘 와 유사한 알고리즘 도 문제 해결한다 "X엑스

주장 2. "우리의 알고리즘은 알고리즘 와 유사하다 "

좀 더 구체적으로 설명하겠습니다. 그래프 알고리즘을 사용한다고 가정합니다. 먼저 두 알고리즘이 비슷한 조건이 필요합니다.

  1. 그들은 같은 문제를 해결해야합니다.
  2. 동일한 수준의 직관적 인 아이디어가 있어야합니다.

예를 들어, 그래프 순회, 폭 우선 및 깊이 우선 순회에 대해 이야기하면 위의 두 가지 조건이 충족됩니다. 최단 경로 계산의 경우, 너비 우선 및 Dijkstra 알고리즘은 위의 두 가지 조건을 충족합니다 (물론 비가 중 그래프). 기타

이것들도 충분한 조건입니까? 보다 구체적으로, 두 알고리즘이 유사한 조건을 충족시키는 것으로 가정하자. 다음과 같은 경우에 실제로 유사하다고 하시겠습니까?

  1. 그들은 다른 점근 성능을 가지고 있습니까?
  2. 특수한 그래프 클래스의 경우 하나의 알고리즘에 Ω() 시간이 필요하고 다른 알고리즘 에는 시간이 필요합니까?영형(1/)
  3. 서로 다른 종료 조건이 있습니까? (동일한 문제를 해결하고 있음을 기억하십시오)
  4. 전처리 단계가 두 알고리즘에서 다른가?
  5. 두 알고리즘에서 메모리 복잡성이 다른가?

편집 : 질문은 분명히 상황에 따라 다르며 주관적입니다. 그러나 위의 5 가지 조건이 제안을 얻을 수 있기를 바랍니다. 답변을 얻는 데 필요한 경우 질문을 더 수정하고 자세한 내용을 알려 드리겠습니다. 감사!


1
그것은 실제로 상황에 달려 있습니다. 예를 들어, 특정 순차 알고리즘의 경우 DFS와 BFS는 매우 다르며 작동하지 않을 수도 있습니다. 병렬 설정에서 DFS (또는 적어도 하나의 변형)는 P- 완전한 반면 BFS는 "병렬 적으로 쉬운"것입니다.
Suresh Venkat

@SureshVenkat-질문이 상황에 따라 매우 다르다는 데 동의합니다. 토론을 시작하지 않기 위해 모호한 소리를

4
문제는 가까이 있고 가까이 있다는 것입니다. 곱하기 가중치 업데이트 방법을 "본질적으로 이진 검색"으로 생각하는 방법이 있지만 잘못된 상황에서는 이것이 미치게 들릴 것입니다. FWIW, 위의 모든 경우에 두 알고리즘을 다르게 선언한다고 상상할 수 있습니다.
Suresh Venkat

1
이 질문은 나에게 너무 주관적인 것 같습니다. 표준 정의가 존재하지 않는 경우 기본적으로 "유사한"정의를 요구합니다.
Joe

답변:


23

"알고리즘 A는 알고리즘 B와 유사하다"라는 일관된 정의를 제공하는 것은 어려운 문제입니다. 우선, "그들은 같은 문제를 해결해야한다"는 필수 조건이라고 생각하지 않습니다. 하나는 논문에서 말한다 종종 때 "알고리즘 것을 정리의 2 알고리즘과 유사 B 정리의 알고리즘," A는 실제로보다 다른 문제가 해결되는 B를 ,하지만 새로운 문제를 처리하기 위해 약간의 수정을가 .21

두 알고리즘 이 동일 하다는 것이 무엇을 의미하는지 결정하는 것조차 흥미롭고 어려운 문제입니다. "두 알고리즘이 같은 경우는 언제입니까?" http://research.microsoft.com/~gurevich/Opera/192.pdf


17

"알고리즘 B를 자세히 작성하고 싶지 않습니다. 흥미로운 모든 세부 사항이 알고리즘 A의 세부 사항과 거의 동일하기 때문에 10 페이지 제한을 넘지 않기를 원합니다. 어쨌든 제출 마감일은 3 시간입니다. "


7

구어체 의미에서 "유사"를 의미한다면 JeffE의 답변이 일부 사람들의 의미를 포착한다고 생각합니다.

기술적 인 측면에서, 그것은 당신이 관심있는 것에 달려 있습니다. 점근 적 시간 복잡성 만 신경 쓰면 재귀와 반복의 차이는 중요하지 않을 수 있습니다. 계산 가능성이 마음에 든다면 카운터 변수와 한 기호 스택의 차이는 중요하지 않습니다.

미디엄에스이자형미디엄:미디엄에스이자형미디엄()미디엄미디엄Msem(P)sem(Q)

M(M,)xy엑스yMsem(P)sem(Q)PQPQ

M

더 일반적으로, 나는 당신이 (직관적 인 용어로) 관심있는 것들, 이러한 직관적 인 속성을 나타내는 수학적 객체는 무엇이며, 알고리즘에서 이러한 객체로 어떻게 매핑 할 수 있으며,이 공간의 구조는 무엇입니까? 또한 물체의 공간이 유사성의 개념을 인정하기에 충분한 구조를 갖는지 묻습니다. 이것이 프로그래밍 언어 의미 관점에서 가져 오는 접근법입니다. 컴퓨터 과학에 대한 생각의 문화가 크게 다르기 때문에이 접근법이 매력적이라고 ​​확신하지는 않습니다.


5

Jeff의 대답에 따라 두 알고리즘 중 하나의 저자가 다른 하나의 저자가 그녀의 논문을 검토 할 것으로 예상하는 경우 유사합니다.

그러나 이론 커뮤니티에서 농담으로, 알고리즘 A가 해결하는 문제가 알고리즘 B와 "유사한"지 ​​여부에 대해 다소 탄탄하다고 말할 수 있습니다. 이는 완전히 다른 문제를 해결할 수 있습니다. A는 동일한 기본 이론 아이디어로 인해 "작동"하는 경우 B와 유사합니다. 예를 들어, 두 알고리즘 모두에서 데이터를 훨씬 더 낮은 차원 공간으로 투영하고 Johnson-Lindenstrauss lemma로 규범을 유지 한 다음 무차별 검색을 수행 할 수있는 주된 아이디어입니까? 그런 다음 알고리즘은 해결하려는 문제에 관계없이 다른 알고리즘과 유사합니다. 광범위한 문제를 해결하는 데 사용할 수있는 중소 량의 알고리즘 기술이 몇 가지 있으며, 이러한 기술이 많은 "유사한"알고리즘 세트의 중심을 형성한다고 생각합니다.


3

매우 흥미로운 질문과 아주 멋진 종이 라이언!

알고리즘 간의 전반적인 유사성을 평가하는 것이 주관적인 가치 판단이라는 생각에 분명히 동의합니다. 기술적 인 관점에서 알고리즘의 유사성을 결정하기 위해 면밀히 관찰되는 많은 기능이 있지만, 결국 개인 취향의 문제이기도합니다. 귀하의 질문의 특정 지점을 언급하면서 동일한 동전의 양면의 중요성에 대한 설명을 제공하려고 노력할 것입니다.

기술적 인 관점에서 :

  1. Ryan은 두 알고리즘 모두 동일한 문제를 해결해야 한다고 이미 지적했다 . 알고리즘 B가 그것을 처리 할 수 ​​있도록 알고리즘 A가 이해할 수있는 동일한 인스턴스의 다항식 변환이 있음을 증명하는 것으로 충분하다고 말함으로써이 개념을 더 일반화하고 일반화 할 수 있습니다. 그러나 이것은 실제로 매우 약합니다. 나는 유사성을 더 강한 의미로 생각하는 것을 선호합니다.
  2. 그러나 나는 두 개의 동등한 알고리즘이 동일한 직관적 인 아이디어를 가질 것으로 기대하지는 않습니다. 그보다 비슷한 것으로 여겨지는 알고리즘이 주요 이론적 근거를 따르지 않는 경우가 종종 있습니다. 예를 들어, 다른 아이디어에 따라 다른 방식으로 시작된 정렬 알고리즘을 고려하십시오. 극단적 인 예로서, 수학적 과정에서 확률 론적 과정 (따라서 그것들은 그들의 관점에서 동등하다)과 같이 수학 공동체에 의해 일반적으로 고려되는 유전 알고리즘을 고려한 다음 상당히 다른 방식으로 모델링되고 분석된다.
  3. 또한 종료 조건 또는 전처리 단계와 같은 다른 기술은 자주 중요하지 않다고 말하기 위해이 개념을 일반화 할 것입니다. 그러나 항상 그런 것은 아닙니다. 예를 들어 Dijkstra의 알고리즘 대 균일 비용 검색 또는 Dijkstra의 알고리즘에 대한 사례를 참조하십시오 . 두 알고리즘은 너무 가깝기 때문에 대부분의 사람들은 그 차이를 알지 못하지만 그 기술의 차이는 그 논문의 저자에게 매우 중요했습니다. 전처리 단계에서도 마찬가지입니다. 당신이 익숙한 경우-퍼즐 다음에 A가맨해튼 거리 또는 (21)가산 패턴 데이터베이스는 실제로 동일한 수의 노드를 정확히 동일한 순서로 확장하므로 두 알고리즘 (및 해당 휴리스틱)이 매우 강력한 의미로 엄격하게 동등하게되는 반면 첫 번째 방법에는 사전 처리가없고 두 번째 방법은 없습니다 특정 인스턴스를 해결하기 전에 상당한 오버 헤드가 있습니다. 그러나 패턴 데이터베이스가 더 많은 시뮬레이션 상호 작용을 고려하자마자 이들간에 성능에 큰 격차가있어 서로 다른 아이디어 / 알고리즘이됩니다.
  4. 사실, 대부분의 사람들은 알고리즘의 목적성능 을 판단 할 것이라고 생각합니다 . 따라서 점근 적 성능은 프로그램 간의 유사성에 대해 추론하기에 좋은 지표입니다. 그러나이 성능이 반드시 전형적인 경우는 아니기 때문에 두 알고리즘이 동일한 점근 성능을 갖지만 실제로 다르게 작동하는 경우에는 알고리즘이 다르다는 결론을 내릴 수 있습니다. 이와 관련하여 강력한 증거는 두 알고리즘이 시간과 메모리에서 모두 동일한 성능을 갖는다는 것입니다 (Suresh가 말한 것처럼 DFS와 BFS는 다르게 보입니다). 이 주장이 당신에게 설득력있게 들리지 않는 경우, 훌륭한 (그리고 매우 권장되는 책)을 참조하십시오 : 우주 프로그래밍세스 로이드 189 페이지에서 그는 알고리즘이 다른 것으로 간주하는 데 사용할 수있는 30 개 이상의 복잡성 측정 값이있는 목록을 참조합니다.

그렇다면 알고리즘이 유사하거나 다른 이유는 무엇입니까? 내 관점에서 (그리고 이것은 순전히 추측 적이다), 주된 차이점은 그들이 당신에게 제안하는 것에 관한 것입니다. 동일한 목적으로 서비스를 제공 할 때 많은 (많은!) 알고리즘이 몇 가지 기술 만 다르기 때문에 일반적인 경우는 입력 범위에 따라 다릅니다. 그러나 모든 차이점 중 가장 큰 것은 그들이 당신에게 제안하는 것입니다. 알고리즘은 기능이 다르기 때문에 고유 한 장단점이 있습니다. 두 알고리즘이 동일하게 보이지만 다른 경우에 대처하기 위해 다른 방식으로 확장 될 수 있다면, 알고리즘이 다르다는 결론을 내릴 것입니다. 그러나 종종 두 알고리즘은 거의 동일하게 보이기 때문에 동일한 것으로 간주합니다 ... 누군가가 키를 구별하여 도착할 때까지 갑자기 완전히 다릅니다!

죄송합니다. 응답이 너무 오래되었습니다 ...

건배,


1
실제로 Ryan은 두 알고리즘 모두 동일한 문제를 해결할 필요 는 없다고 제안했습니다 .
Jeffε

진실! 나는 이와 관련하여 내 의견을 수집하고 있었지만 당신은 분명히 옳습니다!
카를로스 리나 레스 로페즈

2

유사성 메트릭 을 정의하지 않은 유사성에 대한 언급은 잘 정의되지 않았습니다. 두 알고리즘이 유사한 여러 가지 방법이 있습니다.

Quicksort와 Mergesort는 매우 유사한 문제를 해결하지만 서로 다른 알고리즘을 사용하여 해결합니다. 알고리즘의 복잡성은 비슷하지만 최악의 성능과 메모리 사용량은 다를 수 있습니다. Quicksort와 Mergesort는 Bubblesort와 비슷하지만 Bubblesort는 성능 메트릭이 매우 다릅니다. 복잡성 통계 Quicksort를 무시하면 Mergesort와 Bubblesort는 모두 동일한 동등 클래스에 있습니다. 그러나 알고리즘 복잡성에 관심이 있다면 Quicksort와 Mergesort는 Bubblesort와 비슷합니다.

Smith-Waterman 동적 프로그래밍 및 HMM- 시퀀스 비교는 두 시퀀스를 정렬하는 문제를 해결하려고합니다. 그러나 서로 다른 입력을받습니다. Smith-Waterman은 두 개의 시퀀스를 입력으로 사용하고 HMM 시퀀스 비교는 HMM과 시퀀스를 입력으로 사용합니다. 두 출력 시퀀스 정렬. 동기 부여 아이디어 측면에서,이 두 가지 모두 레 벤슈 테인의 편집 거리 와 유사 하지만 매우 높은 수준에서만 가능합니다.

다음은 두 알고리즘을 유사하게 호출 할 수있는 몇 가지 기준입니다.

  1. 입출력 유형
  2. 알고리즘 / 메모리 복잡성
  3. 입력 유형에 대한 가정 (예 : 양수 또는 부동 소수점 안정성)
  4. 중첩 관계 (예 : 일부 알고리즘은 다른 알고리즘의 특수한 경우)

유사성의 의미에 대한 결정은 여전히 ​​남아 있습니다. 때로는 알고리즘의 복잡성을 걱정하지만 때로는 그렇지 않습니다. 유사성의 정의는 토론의 맥락에 따라 다르므로 "유사한 알고리즘"이라는 용어는 잘 정의되어 있지 않습니다.

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