인 경우 방향성이없는 나무 T
이 있고 그곳에는 T.leaves
- 모든 나뭇잎 (각 v는 d(v) = 1
)이 있어야합니다. 우리는 알고있다 : |T.leaves|
및 distance between u and v for each u,v in T.leaves
.
다른 말로하면 : 우리는 방향이없는 나무가 있으며 잎의 수와 2 개의 잎 사이의 거리를 알고 있습니다. how many inside vertices (d(v)>1) are in the tree
을 찾아야합니다.
참고 : 잎이 2 개 밖에 없지만 잎의 간격이 2^30이면 너무 오래 걸릴 수 있으므로 전체 나무를 만드는 것은 불가능합니다.
가장 짧은 거리부터 시작하여 계산 방법을 시도했습니다. 많은 버텍스가 그들 사이에 있고, 가장 가까운 버텍스를 추가합니다. 그러나 이것에 대해서는 몇 가지 수식 f (leaves_counted, next_leaf)가 필요합니다. 그러나 나는 그것을 찾을 수 없었습니다.
어떤 아이디어가 있습니까?나뭇잎에 데이터가 주어진 경우 나뭇잎이
답변
의견에서 계속됩니다. 이것은 특정 (압축 된) 에지를 확인하여 거리의 반복없이 새로운 꼭지점 인 n
을 중간에 부착 할 수 있는지 확인하는 방법입니다.
좋아, 그래서 당신은 세 개의 숫자를 찾을 필요가 : l
(문제의 모서리의 왼쪽 노드에서 연결 지점의 거리)의 연결 지점에서 새로운 노드의 x
(거리) 및 l
대칭 r
(.)
물론, 세트 L
의 모든 노드 y
(트리의 왼쪽 부분)에 대해, A
과의 거리가 (동일한 번호로 n
에의 거리 달라야를 호출 할 수 있습니다 dl
whi ch는 같아야합니다. l
+ x
). 그렇지 않은 경우이 특정 가장자리에 대한 해결책이 없습니다. R
에있는 노드의 경우도 마찬가지이며, 각각 dr
및 r
+ x
입니다.
l + x = dl
r + x = dr
r+l = dist(A,B)
세 방정식, 세 개의 숫자 : 위가 보유하고있는 경우
는 다음 세 가지 방정식이있다. 이것이 해결책이있는 경우에 당신은 맞은 가장자리를 찾아 냈다.
최악의 경우 모든 가장자리에 대해 위의 과정을 반복해야하지만 최적화가 가능하다고 생각합니다. L
및 R
의 거리 확인은 추가 검색에서 트리 부분 중 하나를 제외 할 수 있습니다. 트리를 구성하지 않고도 노드의 수를 어떻게 든 얻는 것이 가능할 수도 있습니다.
오늘/내일을 구현하고이 답변에 대한 의견을 보내 주려고합니다. 감사! – amit
@amit gr : 최적화 가능성이 있음을 유의하십시오. 이것은 단지 완벽한 최적의 알고리즘보다는 유용한 아이디어를 보여주는 것이 었습니다. –
은 완벽하게 작동했지만 이후에 누군가 시도하면 몇 가지 설명이 있습니다. dist (A, B) = r + l-1 (두 번 계산 된 단일 정점이 있으므로) x}를 트리에 이미있는 두 개의 정점 (A, B)마다 찾습니다. 문제는 O (n^3)에서 이런 방식으로 해결됩니다. 최적의 최적화가 O (n^2)보다 적게 (각 꼭지점의 적절한 순서를 추가하여) min {x}을 찾을 수 있다고 확신합니다. – amit
이진 트리에 L 잎이있는 경우 트리 모양에 관계없이 L-1 내부 정점이 있습니다.
쉽게 증명할 수 있습니다. 하나의 노드 (루트) 노드로 트리부터 시작하십시오. 그런 다음 리프를 가져 와서 두 개의 자손을 추가하여 리프를 내부 정점으로 변환하고 리프에 추가합니다. 이것은 한 리프 (이전 노드)를 제거하고 하나의 내부 노드와 두 리프를 추가합니다. 즉, net은 +1 내부 노드와 +1 리프입니다.첫 번째 리프와 0 개의 내부 노드로 시작하기 때문에 항상 | 잎 | = | 내부 노드 | +1 --- 어떤 트리 형태도이 프로세스에 의해 생성 될 수 있습니다. 4 개 단풍 나무의 모든 두 가지 형태의
다음예 (사소한 좌우 대칭을 위해 저장) : 내부 꼭지점의 수는 항상 당신이 실제로이를 구축 할 수 있습니다 3.
이진 트리 일 필요는 없습니다. – amit
- 1. jEditable : 데이터가 변경되지 않은 경우
- 2. 데이터가 iPhone에서 작동하지 않는 경우
- 3. Progressbar를 표시하는 방법 데이터가 웹에서로드되는 경우?
- 4. 데이터가 알려진 경우 암호화 키 검색
- 5. nokogiri는 올바른 xpath가 주어진 경우 공백을 반환합니다.
- 6. 어떻게 이런 주어진 장고 모델 클래스가있는 경우
- 7. 주어진 유형이 어떤 인터페이스를 구현하는 경우 어떻게해야합니까?
- 8. LINQ - 특정 날짜 주어진 경우 절
- 9. 구조를 복구하고 주어진 백업 (schema.sql)에서 데이터가 복원되지 않습니다.
- 10. .. 데이터가
- 11. 해당 셀에 주어진 값이있는 경우 고정되지 않은 셀 수의 합
- 12. 데이터가
- 13. 정렬 데이터가
- 14. 소셜 네트워킹 사이트의 경우 데이터베이스에 데이터가 어떻게 저장됩니까?
- 15. mysql 테이블에 데이터가 포함되어있는 경우 데이터를 삽입하지 않으면 업데이트하십시오. (PHP)
- 16. XML 데이터가 비 유니 코드 인 경우 오류 글꼴
- 17. 데이터가 일반 그리드에없는 경우 등고선 플롯을 그리는 방법은 무엇입니까?
- 18. SQL 인덱스 된 뷰 : 데이터가 변경된 경우 어떤 일이 발생합니까?
- 19. 데이터가 아직 입력되지 않은 경우 트리거를 사용하여 테이블에 삽입하십시오.
- 20. 데이터가 빠르게 변경되는 경우 Excel과의 연결을 유지하는 방법은 무엇입니까?
- 21. ADO를 통해 Access에서 보고서를 만드는 방법 데이터가 SQL Server에있는 경우?
- 22. 테이블에 데이터가 이미 포함되어 있는지 검색하고 싶습니다. 삽입하지 않은 경우
- 23. Asp.net 중계기 제어 데이터가 여러 번 사용되는 경우 중복됩니다.
- 24. blob에 특정 데이터가 포함되어있는 경우 BLOB 업데이트 문제.
- 25. 디버거에서 실행되는 경우 Visual Studio에서 데이터가 올바르게 정렬되지 않았습니다.
- 26. jquery ajax 반환 데이터가 비어있는 경우 판사를 추가하는 방법은 무엇입니까?
- 27. NSString이 주어진 경우 Obj-C에 메서드가 있는지 알아 보는 방법
- 28. 부분적으로 한정된 형식 이름이 주어진 경우 Type.GetType은 어떻게 작동합니까?
- 29. 입력 및 원하는 출력이 주어진 경우 필요한 변환을 찾습니다.
- 30. 부분 링크 값이 주어진 경우 링크를 추출하는 방법
입니다
나무. 비 분기 경로를 압축하여 (하나의 가장자리 + 길이 저장) 필요에 따라 내부 노드를 추가하면됩니다. 따라서 두 개의 노드가 2^31 떨어져있는 노드는 단지 2 개의 노드와 2^31이라고 표시된 하나의 물리적 인 에지입니다. * 실제로 해야할지 모르지만 * 할 수는 있습니다. –@Rafal :하지만 다른 꼭지점을 추가하려고 할 때, 뭔가를 놓치지 않는 한 모든 가능성을 검사해야하며이 거리를 반복해야합니다. – amit
gr : 반드시 거리가 수레처럼 방정식을 풀 수 있습니다. –