두 다항식 사이의 거리 찾기 (나무로 표시)


20

유전자 프로그래밍 작업을하는 동료 가 다음과 같은 질문을했습니다. 처음에는 욕심 많은 접근 방식으로 해결하려고 시도했지만 두 번째 생각에는 욕심 알고리즘에 대한 반례를 발견했습니다. 그래서 여기서 언급 할 가치가 있다고 생각했습니다.


표현식 트리로 표시되는 두 개의 다항식을 고려하십시오. 예를 들어, 엑스2엑스+1엑스2+4 아래 도시된다를

규칙 :

  1. 각 노드는 변수 이름 ( 엑스,와이,, ), 숫자 또는 연산 (+,-, ×)입니다.
  2. 트리의 순서대로 순회하면 유효한 다항식이 발생합니다.
  3. 작업 노드의 각도는 2입니다. 다른 노드의 각도는 0입니다. 모든 노드의 각도는 1입니다 (루트 제외, 각도는 0 임).

트리의 노드 N에서 다음과 같이 기본 조작 을 정의하십시오 .

  1. 기본 조작으로 노드의 레이블을 변경할 수 있습니다. 예를 들어, 엑스 를 3으로 변경하거나 +를 × 로 변경할 수 있습니다 .
  2. 기본 작업은 N 위에 식 트리를 만들 수 있습니다 (아래 예 참조).

유형 1 의 기본 연산 비용은 1 입니다. 유형 2 의 비용 은 새로 작성된 표현식 트리의 {+,-, ×} 연산 수와 같습니다.

유형 2의 예 : 노드 N 위에 빌드 된 표현식 트리는 두 가지 연산 (-및 ×)을 사용하므로 다음 기본 연산의 비용은 2입니다.

T1과 T2는 다항식을 나타내는 두 개의 표현 트리가되게하십시오. T1과 T2 의 거리 를 다음과 같이 정의하십시오 . T1을 T2로 변환하기위한 기본 조작의 최소 비용. 변환 된 트리가 T2와 동일한 구조를 가질 필요는 없습니다. 우리는 단지 T2와 같은 다항식을 계산하기를 원합니다. (예는 주석을 참조하십시오.)

문제 : T1과 T2가 주어지면 거리를 계산하는 알고리즘이 제시됩니다.

예 1 : 이 게시물의 시작 부분에 T1과 T2를 두 개의 트리로 표시합니다. 오른쪽 트리를 왼쪽 트리로 변환하기 위해 × 위에 비용 트리 3을 만들고 4를 1로 변경할 수 있습니다 (총 비용은 4 임).

엑스4엑스4+4엑스+6엑스2+4엑스+1엑스(엑스+1)4엑스4엑스6엑스24엑스


2
"삭제"조작이 허용되지 않으면 거리는 거리가 아닙니다. 예를 들어, T1 = (x * x) +4 트리는 T2 = x로 변환 할 수 없지만 T2는 x 위에 (* x)를 추가 한 다음 (+4)를 더하여 T1으로 변환 할 수 있습니다. 괜찮아? 또는 T1을 T2로 변환하거나 T2를 T1로 변환하는 데 필요한 최소 연산으로 거리를 정의해야합니다.
Marzio De Biasi 2012

4
주어진 두 개의 (분할이없는) 산술 공식이 동일한 다항식을 나타내는 경우에만 비용은 0과 같습니다. 내가 정확하게 기억한다면, 이것은 P에없는 것으로 알려진 coRP (임의 할당에 의한)의 전형적인 문제입니다.
Ito Tsuyoshi Ito

4
@ 츠요시 : 아, 알겠습니다. 다항식 아이덴티티 테스트 문제를 지적하고 있습니다. (참조 : [1 ] 및 [2 ]). 나는 이것에 대해 생각해야한다. 한편, 어떤 제안이라도 환영합니다.
MS Dousti

4
맞어 그거야. 다항식 아이덴티티 테스트 문제 의 전형적인 버전에서, 두 개의 입력 다항식은 공식이 아닌 회로로 제공되는 것으로 보입니다 . 따라서 공식 버전이“일반적”이라는 나의 말은 아마도 정확하지 않을 것입니다. 어쨌든 P에 수식 버전을 넣는 것도 열린 문제인 것 같습니다.
Tsuyoshi Ito

2
@Vor : 현재 공식에서, 입력 T1은 실제로 트리이고 입력 T2는 다음과 같은 의미에서 트리로 주어진 다항식입니다. T1을 동일한 다항식을 나타내는 다른 트리로 변경하면 일반적으로 답이 변경 될 수 있지만 T2를 비슷한 방식으로 변경해도 그렇지 않습니다.
이토 쓰요시

답변:


10

트리 편집 거리는 문자열 편집 거리의 일반화입니다. 두 트리 사이의 거리는 노드 삽입의 최소 개수 \ 삭제 \와 한 트리를 다른 트리로 바꾸는 데 필요한 레이블을 다시 지정합니다. (노드 v를 삭제하면 v의 자식은 parent (v)의 자식이됩니다). 문제는 나무가 정렬되지 않았을 때 NP-hard이지만, 순서가있을 때 (즉, 형제들 사이에 왼쪽에서 오른쪽 순서가 있음) 문제는 O (n ^ 3) 시간에 해결할 수 있습니다 Sadeq 언급). 이것을 설명하는 좋은 조사 : http://portal.acm.org/citation.cfm?id=1085283


1
고마워 아비브. 답변을 병합하면 좋을 것입니다 (이전 계정 사용에 문제가있는 것 같습니다). 이 게시물 의 조언을 사용할 수 있습니다 (특히이 링크 ).
MS Dousti

이 접근 방식은 여러 가지 다항식으로 다른 나무를 어떻게
다룰 것인가
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.