효율적 짧은 샘플링


14

하자 그래프, 그리고하자 과 두 꼭지점 . 우리는 효율적 짧은 샘플링 수 - 사이에있는 모든 최단 경로들의 세트로부터 임의로 독립적으로 클리핑 및 ? 간단히하기 위해 는 단순하고 방향이 지정되지 않고 가중치가 없다고 가정 할 수 있습니다 .GGssttGGssttssttGG

많은 제한된 그래프에서도 가장 짧은 경로의 수 ss 와 수는 크기에서 지수가 될 수 있습니다 . 따라서, 우리는 자연스럽게 피할처럼 실제로 모든 짧은 컴퓨팅 것 - 경로를. 일반적인 경우는 모르겠지만 특수 그래프 클래스에서이를 달성 할 수있는 것 같습니다.ttGGsstt

이것은 누군가가 전에 고려해야했던 것 같습니다. 이것에 대한 기존 연구가 있습니까? 아니면 일반 그래프에서도 간단하게 수행 할 수 있습니까?


좋은 질문 Juho. 답을 고려하면서 "st 경로를 무작위로 균일하게 샘플링"함으로써 정확히 무엇을 이해하고 있습니까? s와 t가 무작위로 선택되기에 충분하다면 질문은 사소한 것이므로 가장 짧은 경로의 모든 노드가 균일 한 분포를 따르는 빈도 (즉, 확률)로 나타납니다. 아니면 다른 정의가 있습니까? 특히, 이분 그래프의 경우 귀하의 질문은 매우 쉬운 것 같습니다.
카를로스 리나 레스 로페스

1
@ CarlosLinaresLópez 다이아몬드 그래프 를 말하고, s 가 "수직 가장자리"의 오른쪽에 있고 t 가 왼쪽에 있다고 가정하십시오 . 이제 st 사이에 2 개의 최단 경로가 있습니다. 알고리즘은이 두 경로 중 하나에 동일한 확률로 반환해야합니다. 따라서 st 는 "임의로 픽업"되지 않지만 입력으로 제공됩니다. 그것이 분명합니까? 이런 의미에서 이분 그래프에 문제가 실제로 쉬운 지 확실하지 않습니다. ststst
Juho

1
@ CarlosLinaresLópez 다른 말로하면, 우리는 주어진 그래프 G 및 두 꼭지점 , t V ( G ) . 하자 S는 사이의 모든 최단 경로들의 집합 St . S 의 요소 를 무작위로 균일하게 출력하십시오 . Gs,tV(G)SstS
Juho

답변:


6

나는이 대답이 정확하다는 것을 100 % 확신하지 못하지만 여기에 간다.

단일 소스와 단일 싱크가있는 DAG 에서 s - t 에서 임의의 경로를 균일하게 무작위로 줄이기 위해 이것을 줄일 수 있다고 생각합니다 .st

주어진 그래프 GG

  1. 비어있는 새 그래프 H를 만듭니다.H
  2. 첫째 :부터 다 익스트라의 최단 경로의 BFS 부분을 실행 자신의 최단 거리 단으로 모든 노드 마크 .ss
  3. d ( s , v )s - v 로부터 최소 거리라고 하자 . Dijkstra의 최단 경로 알고리즘의 BFS 단계에서 알 수 있습니다.d(s,v)sv
  4. 그런 다음 Dijkstra의 최단 경로 알고리즘의 다음 단계를 수행하고 최단 경로를 얻고 p에 저장하십시오 ( t 에서 s 로 거꾸로 이동 ).pts
  5. 이제 다음 루프를 시작하십시오. 주석과 아래의 확장 :
    • q 0 = { t }q0={t}
    • q 0 동안q0
      • q 1 = q1=
      • 대한 Q 0uq0
        • 그래서 우리는 t - u 에서이 최단 거리 경로에 대해 가능한 모든 다음 노드를 찾고 싶습니다tu
        • 모든 모서리 ( u , v ) G에 대해 d ( s , v ) < d ( s , u )edge(u,v)Gd(s,v)<d(s,u)
          • v 는 더 적은 d ( s , )를 가진 이웃 노드입니다( 1이 적습니다)vd(s,)1
          • 따라서 t - u - v 는 최단 경로에서 가능한 서브 패스입니다.tuv
          • 넣어 H , 디 에지 ( U , V ) HvH,di-edge(u,v)H
          • 이제 우리는 다음 차례에 v 의 이웃 을 확인해야합니다 .v
          • v를 넣는다 q 1vq1
      • q 0q 1로 설정하십시오 . q0q1
        • q 0q 1q0q1

기본적으로 가장 짧은 경로에서 사용할 수있는 모든 가능한 노드를 수집하여 H에 배치합니다 .H

작동 방식에 대한 추가 정보 :

Dijkstra의 최단 경로 알고리즘은 먼저 BFS를 실행하고 모든 노드 v Gs - v 최단 경로를 표시하여 작동합니다 . 다음 단계는 t - s 에서 되돌아 가서 가장 적은 이웃 노드를 다시 따르는 것입니다.vGsvts

문제는 여기에 당신이 선택할 수 있습니다 어떤 최소한의 이웃 노드를. 여기서하는 것은 각 단계마다 가장 적은 이웃 노드를 모두 모으는 입니다. 즉, 모든 최단 경로를 설명합니다.

이제 당신은 빨리 생각하지만, 왜 그것들을 기하 급수적 으로 열거하고 있지만 내 방식은 그렇지 않습니까?

대답은 동일한 노드를 두 번 추가하지 않도록 세트를 사용하기 때문에 가능한 각 경로에 대해 다시 계산하지 않는 것입니다.

이제 우리는 t - s 에서 어떤 식 으로든 통과하고 s - t 에서 최단 역전 경로를 얻을 수있는 DAG를 갖습니다 . 그래프는 유일한 소스로 t 를, 유일한 싱크로 s 를 가져야합니다 .tsstts


위의 내용이 맞으면 다음 단계로 진행하여 문제를 해결할 수 있다고 생각합니다.

DAG의 각 노드에 노드 가중치를 부여하십시오. 노드 가중치는 해당 노드에서 s 까지의 경로 수입니다 . 이것을 w ( v ) 라고하자 .sw(v)

이를 빠르게 계산할 수 있습니다 . G에서 s에서 t까지의 간단한 경로 수를 찾는 알고리즘을 참조하십시오 .

노드 가중치가 있으면 다음과 같이 경로를 균일하게 선택할 수 있습니다.

  • DAG를 레벨 구조로 배치 (시각화)
  • 각 레벨에서 노드 간 임의 순서를 선택하십시오. "왼쪽에서 오른쪽으로"라는 개념.
  • DAG 탐색 : 각 단계에서 i , i [ 1 , | p | ] (여기서 || 는이 경우 가장 짧은 경로의 길이)를 의미합니다. ii[1,|p|]||
    • 하자 U 제가 현재 노드 수 (시작 t )uit
    • 자손의 온 무게까지 추가 및 RNG를 사용하여, 하나 개의 자식 노드를 선택 V 난을 균일하게 가중 아이들 사이.uivi
    • u i + 1 = v i 설정 하고 다음 단계로 이동ui+1=vi

레벨 구조와 왼쪽에서 오른쪽으로의 개념은 단순히 r [ 0 , w ( t ) ) 를 생성하고 그런 식으로 경로를 선택 하려는 초기 시도의 일부 였지만 알아 내지 못했습니다. 안전하게 무시할 수 있습니다. r[0,w(t))
Realz Slaw

1
이 답변은 좋아 보인다! 나는 아이디어를 좋아한다! 나는 이해의 시험으로 약간 다른 방식으로 (내 대답으로) 작성하려고했습니다. 어쨌든, 나는이 사랑스러운 답변에 대한 감사를 나누고 싶었습니다!
DW

5

다음은 Realz Slaw의 아이디어를 기반으로 한 솔루션입니다. 기본적으로 그의 아이디어를 더 명확하고 쉽게 따라 할 수있는 표현입니다. 계획은 다음 두 단계로 진행됩니다.

  1. 첫째, 우리는 그래프 만들 것이다 S를 다음의 속성 : 어떠한 경로 t 에서 S는 최단 경로 t 에서 G 와 매주 최단 경로 t 에서 G 로도 존재 S . 따라서 S 에는 G 에서 가장 짧은 경로가 포함됩니다 . 모든 가장 짧은 경로는 더 이상 없습니다. 공교롭게도, S는 DAG에있을 것입니다.SstSstGstGSSGS

  2. 다음 으로 S 의 s 에서 t 까지 모든 경로에서 무작위로 균일하게 샘플링 합니다.stS

이 접근법 은 모든 모서리가 양의 가중치 를 갖는 한 임의의 지향성 그래프 G로 일반화 하므로 알고리즘에 대해 설명하겠습니다. 보자 ( , V ) 가장자리에 무게를 나타내는 U를 V . (이것은 당신이 준 문제 진술을 일반화합니다. 비가 중 그래프가있는 경우, 모든 모서리의 가중치가 1이라고 가정하십시오. 비 방향 그래프가있는 경우, 각각의 비 방향성 에지 ( u , v ) 를 두 개의 방향성 모서리 u vv로 취급하십시오 .)Gw(u,v)uv(u,v)uvvu


단계 1 : 추출 S . Ssource s 에서 시작 하여 G 에서 단일 소스 최단 경로 알고리즘 (예 : Dijkstra의 알고리즘)을 실행하십시오 . 각 정점 들어 V 에서 G ,하자 D는 ( S는 , V ) 으로부터의 거리 나타낸다 브이 .GsvGd(s,v)sv

이제 다음과 같이 그래프 S 를 정의하십시오 . (1) u vG 의 모서리 이고 (2) d ( s , v ) = d ( s , u ) + w ( u , v ) 가되도록 모든 모서리 u v 로 구성됩니다 .SuvuvGd(s,v)=d(s,u)+w(u,v)

그래프 S 에는 몇 가지 편리한 속성이 있습니다.S

  • 매주 최단 경로 t 에서 G가 있는 경로로서 존재 S : 최단 경로 (S) =가 v에 0 , V 1 , V 2 , ... , V의 k는 = t 에서 G는 속성을 가지고 그 D ( S , V I + 1 ) = d ( s , v i ) + w ( v i , v istGSs=v0,v1,v2,,vk=tG+ 1 )이므로 에지 V I V I + 1 에 존재하는S.d(s,vi+1)=d(s,vi)+w(vi,vi+1)vivi+1S

  • S 에서 s 에서 t 까지 모든 경로는 G 에서 가장 짧은 경로입니다 . 특히 S 에서 s 에서 t 까지 경로 ( 예 : s = v 0 , v 1 , v 2 , , v k = t)를 고려하십시오 . 길이는 가장자리의 가중치의 합으로 주어집니다. 즉 k i = 1 w ( v i - 1 , v i )SstGSsts=v0,v1,v2,,vk=tki=1w(vi1,vi)하지만,의 정의에 의해 S ,이 합은 Σ의 K = 1 ( D ( , V I ) - (D) ( S , V I - 1 ) 에 망원경 D ( S , T ) - (D) ( S , S ) = d ( s , t ) 이므로이 경로 는 G 에서 s 에서 t 까지 최단 경로입니다.Ski=1(d(s,vi)d(s,vi1)d(s,t)d(s,s)=d(s,t)stG.

  • 마지막으로, G 에 제로 웨이트 엣지가 없다는 것은 S 가 무시 된다는 것을 의미합니다 .GS

2 단계 : 임의의 경로를 샘플링합니다. 이제 우리는의 가장자리에 가중치 멀리 던질 수있는 S를 , 그리고에서 임의의 경로 샘플 t 에서 S .SstS

이를 돕기 위해 S의 각 정점 v 에 대해 n ( v ) 을 계산하기 위해 사전 계산을 수행합니다 . 여기서 n ( v )v 에서 t 까지의 고유 경로 수를 계산합니다 . 이 사전 계산은 다음과 같은 반복 관계를 사용하여 S 의 정점을 위상 적으로 정렬 된 순서 로 스캔하여 선형 시간으로 수행 할 수 있습니다 .n(v)vSn(v)vtS

n ( v ) = w succ ( v ) n ( w )

n(v)=wsucc(v)n(w)

여기서 succ ( v )v 의 후속 작업을 나타냅니다. 즉, succ ( v ) = { w : v w  는 S } 의 모서리이며  기본 사례는 n ( t ) = 1 입니다.succ(v)vsucc(v)={w:vw is an edge in S}n(t)=1

다음으로, n ( ) 주석을 사용하여 임의의 경로를 샘플링합니다. 우리 처음 방문 노드 . 그 후, 우리는 임의의 후속의 하나를 선택 (S)을 후속으로, 의해 가중 N ( ) . 다시 말해:n()sswn(w)

choosesuccessor(v):
    n = 0
    for each w in succ(w):
        n = n + n(w)
    r = a random integer between 0 and n-1
    n = 0
    for each w in succ(w):
        n = n + n(w)
        if r < n:
            return w

임의의 경로를 선택하기 위해이 프로세스를 반복적으로 반복합니다. 즉, v 0 = sv i + 1 = ( v i ) . 결과 경로는 원하는 경로이며 s 에서 t 까지 모든 최단 경로에서 무작위로 균일하게 샘플링됩니다 .v0=svi+1= choosesuccessor(vi)st

이것이 Realz Slaw의 솔루션을 더 쉽게 이해하는 데 도움이되기를 바랍니다. 이 문제에 대한 아름답고 깨끗한 해결책에 대한 Realz Slaw의 모든 공로!


이것이 처리하지 않는 한 가지 경우는 일부 모서리의 무게가 0이거나 음의 가중치입니다. 그러나 최단 경로가 무한히 많을 수 있으므로이 경우 문제가 잘 정의되지 않습니다.


시간을내어 내 대답을 완전히 얻게되어 기쁘다. 나는 그것이 정확하지 않았다. 이제 나는 입증되었습니다 : D.
Realz Slaw가
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.