문제

두 개의 이진 나무가 동형이라는 것은 무엇을 의미합니까? 나는 온라인을보고 있었고 명확한 설명을 찾을 수없는 것 같습니다.

내가 이해하는 한, 두 나무가 같은 모양을 가지고 있다면 동형입니다. 그래서 나는 노드에 다른 값을 포함 할 수있는 두 개의 동일한 나무를 추측하고 있습니다.

도움이 되었습니까?

해결책

이소성은 그리스어 "동일한 모양"에서 유래 한 것 (동일한 공기압이있는 점이며 다각형은 "많은 측면"을 의미 함)이므로 이해가 정확합니다. 그러나이 경우 모양을 가정하는 실수를하지 마십시오. 물리적 인 모양 (트리에는 하나의 루트, 왼쪽 노드 1 개, 오른쪽 노드 하나; 아래 아래 참조)가 있습니다. 수학자들은 자신의 언어 만 가지고 있습니다 때때로 영어와의 관계를 맺고 있습니다 :-)

이진 나무만이 아닙니다. 수학에서는 표현에 관계없이 특성이 보존되면 두 구조가 동형입니다 (정보 손실없이 A에서 B에서 A로 A로 변환 할 수 있습니다).

특정한 경우에는 나무의 정보가 보존 된 정보입니다. 예를 들어 해당 정보가 정렬 된 요소 인 경우 {1,2,3}, 그럼 나무가 동일 할 필요는 없습니다 물리적 인 전혀 모양 - 다음 두 가지는 동형입니다.

  2      1
 / \      \
1   3      2
            \
             3

정렬 된 링크 목록 (또는 해당 물질에 대한 정렬 된 배열)도 두 사이의 변환에서 정보가 손실되지 않기 때문에 동형입니다.

이진 트리가 정렬 순서가 관련이없는 방식으로 사용 된 경우 (즉, "백"종류의 컨테이너), 정보는 어떤 순서로든 내용 일 뿐이며 다음은 동형 일 것입니다 (두 번째는 마지막 두 번째는 그냥 가방, 마지막은 목록입니다) :

  2      1           2   3                   +---+  +---+  +---+
 / \      \         /     \      +-------+   | 3 |->| 1 |->| 2 |
1   3      2       1       2     | 1,3,2 |   +---+  +---+  +---+
            \     /         \    +-------+
             3   3           1

물론, 분류되지 않은 나무는 필요에 따라 약간의 폐기물로 간주 될 수 있지만, 이는이 특정 토론과 관련이 없습니다.

다른 팁

다음 조건은 동형이 되려면 두 나무로 충족되어야합니다.
1. 두 개의 트리는 동일한 레벨을 보존하고 각 레벨의 정점이 동일하지 않은 경우에만 등방성입니다.

2. 두 개의 나무는 동일한 정도 스펙트럼을 가진 경우에만 동형입니다.

3. 둘은 각 레벨에서 같은 정도의 스펙트럼을 가진 경우에만 동형입니다.

  1. 정점의 잎 후손의 총계는 아니며 정점의 수준 수는 나무 나무 등 동형 불변량입니다.

간단한 말로 :
한 나무가 다른 수의 플립을 수행하여 한 나무가 다른 수위를 교환하여 다른 노드의 오른쪽 어린이를 수행하여 다른 나무를 얻을 수있는 경우 두 개의 나무가 동형입니다.

동형 나무의 예 :isomorphic trees

참조 : 1.http://www14.in.tum.de/konferenzen/jass03/presentations/eterevsky.pdf 2.http://www.geeksforgeeks.org/tree-isomorphism-problem/

나는 당신의 이해가 거의 정확하다고 생각합니다. 값을 무시하고 구조를 보면 첫 번째 트리의 모든 노드에 대해 다른 트리에 해당 노드가 있어야하며 그 반대도 마찬가지입니다.

당연히 두 나무는 같은 수의 노드를 가질 것입니다. 또한 가능한 모든 매핑 함수를 시도 하여이 동형을 확인하고 다른 하나의 노드에 매핑되는 첫 번째 트리의 모든 노드에 대해 해당 매핑이 부모와 두 자녀와 함께. 이를 확인하기위한 효율적인 알고리즘이 분명히 있습니다.

당신은 읽을 수 있습니다 그래프 동형 첫 번째; 나무는주기가 없기 때문에 특별한 (그리고 해결하기 쉬운) 케이스입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top