구분자 쿼리에서 트리 재구성


18

가 구조를 모르는 상수도 트리 라고 가정하십시오 . 문제는 "노드 가 노드 에서 노드 까지의 경로에 있습니까?" 와 같은 쿼리를 요청 하여 트리 를 출력하는 것입니다 . 오라클은 각 쿼리에 일정한 시간 안에 응답 할 수 있다고 가정합니다. 트리의 노드 수인 값을 알고 있습니다. 목표는 트리를 출력하는 데 걸리는 시간을 최소화하는 것 입니다.TTxabnn

이 생길 존재 상기 문제에 대한 알고리즘을?o(n2)

에서 노드의 정도가 최대 3 이라고 가정하십시오 .T


내가 아는데 것을

바운드 직경 케이스는 쉽습니다 . 트리의 지름이 인 경우 분할 및 정복 알고리즘을 얻을 수 있습니다.D

이진 트리에는 트리를 1 / 3n 이상의 크기의 구성 요소로 나누는 좋은 구분 기호가 있습니다.

  1. 정점 x를 선택하십시오. 좋은 구분자 레이블 인 경우 재귀하십시오.
  2. x의 3 개의 이웃을 모두 찾으십시오.
  3. 노드 수가 가장 많은 이웃 방향으로 이동하십시오. 이웃과 함께 2 단계를 반복하십시오.

구분 기호를 찾는 데는 대부분의 단계가 필요하므로 알고리즘을 얻습니다 .DO(nDlogn)

알고리즘 무작위O(nlog2n) . (아래 의견에서 이동)

두 개의 꼭짓점 x와 y를 무작위로 선택하십시오. 1/9 확률로 분리 자의 반대편에 놓입니다. 경로의 중간 노드를 에서 . 이진 검색을 수행하지 않으면 구분 기호인지 확인하십시오.xy

구분 기호를 찾는 데 예상 시간 이 걸립니다 . 그래서 우리는 무작위 알고리즘 을 얻습니다 .O(nlogn)O(nlog2n)


배경. 나는 확률 적 그래픽 모델에서 일하는 친구로부터이 문제에 대해 배웠다. 위의 문제 는 3 개의 임의의 변수 X, Y 및 Z가 주어지면 Z 값이 주어지면 X와 Y 사이의 상호 정보 값을 알 수있는 오라클을 사용하여 접합 트리 의 구조를 학습하는 것과 대략 일치합니다 . 우리는 Z가 X에서 Y로가는 경로에 있다고 가정 할 수있다.


7
문제에 대해 이미 알고있는 내용을 알려 주시면 시간을 낭비하지 않아도됩니다.
Jeffε

@ Jɛ ff E 질문을 편집했습니다.
Jagadish

답변:


5

아니오 . 다음의 간단한 대적 전략은 노드 트리 를 재구성하는 알고리즘이 적어도 ( n - 1)n"사이에"쿼리.(n12)=n(n1)/2

노드 임의로 레이블을 지정하십시오 . 적은 트리가 중심에 정점이 0 인 별인 것처럼 모든 쿼리에 응답합니다 . 0 을 루트로 생각 하고 다른 노드를 자식으로 생각하십시오.0,1,2,,n100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

이제 미만의 쿼리를 수행 한 후 알고리즘이 중지되었다고 가정 합니다. 그런 다음 알고리즘이 트리플 ( 0 , y , z )의 순열을 쿼리하지 않도록 0이 아닌 두 개의 꼭짓점 yz 가 있어야합니다 . 알고리즘이 트리가 중심 0을 가진 별이 아니라고 주장 하면 공격자는 입력 내용을 표시하여 알고리즘이 잘못되었음을 증명합니다. 그러면 적은 x 가 실제로 y 의 유일한 자식 임을 알 수있어 알고리즘이 다시 잘못되었음을 증명합니다.n(n1)/2yz(0,y,z)0xy

업데이트 : 죄송합니다. 정도 제약 조건을 발견했습니다. 다행히도 이것은 큰 장애물이 아닙니다. 노드 을 선호하는 이진 트리로 바꾸고 다른 n - 1 노드를 잎으로 알 수없는 순서로 바꾸고이 하위 트리를 재구성 알고리즘에 공개하십시오. 결과적인 ( 2 n - 3 ) 노드 이진 트리를 재구성하려면 여전히 적어도 n ( n - 1 ) / 2 쿼리가 필요합니다. 마찬가지로, m- 노드 이진 트리를 재구성 하려면 최소한 ( m + 3 )이 필요합니다0n1(2n3)n(n1)/2m 쿼리. (나는 더 미묘한 건설 상수를 향상시킬 것입니다 확신합니다.)(m+3)(m+2)/8 으로 인 Jagadish는 지적이 일반화 작동하지 않습니다; 트리의 내부 노드에 대한 쿼리는 리프에 순서를 부여하여 필요한 쿼리 수를 줄였습니다.


내 질문은 일정한 정도의 나무에 관한 것입니다. 이 주장은 그 경우에는 효과가 없습니다.
Jagadish

2
@Jagadish : (1)이 하한의 증거가 무작위 알고리즘에서 작동한다고 생각하지 않습니다. 대적은 여전히 ​​실패한 예를 만들 수 있지만 무작위 알고리즘이 높은 확률로 올바르게 작동한다는 가설과 모순되지는 않습니다. (2) 그런데, 당신은 대답을 알고 질문을 한 것 같습니다. 무엇을 위해 했습니까?
이토 쓰요시

2
내가 참조. 설명해 주셔서 감사합니다. 또한 질문을 편집 해 주셔서 감사합니다!
Ito Tsuyoshi

4
무작위 알고리즘이있는 경우 알고리즘이 있습니다. 결정론이 과대 평가되었다.
Jeffε

1
이 문제는 정렬 및 일치하는 너트와 볼트를 상기시킵니다. 확률이 높은 시간에 실행되는 무작위 알고리즘 은 간단합니다 . 무작위로 정렬 된 퀵 정렬 입니다. 결정 론적 O ( n log n ) -시간 알고리즘이 있지만 심각 하지는 않습니다 . O(nlogn)O(nlogn)
Jeffε

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