虚树学习笔记 | Sengxian's Blog



虚树学习笔记 | Sengxian's Blog

可以看到,所有关键点都留了下来,而且树的形态也被完好的保存了下来。往往未被选中的点并不影响答案,这些未被选中的点,以路径长度的形式存在于虚树中。

定理一:在一棵有根树中,任选 kk 不重复的点,这 kk 个点两两之间的不同的 LCA 个数不超过 k1k - 1 个。
证明:我们考虑求出 kk 个点两两之间的 LCA,将其按照到根的距离从到大到小排序,记为 l1,l2,,lml_1, l_2, \cdots, l_m

我们考虑这样一个事实:假设 uuvv 的 LCA 是 l1l_1,而如果 uuww 的 LCA 是 lxl_xlxl1l_x \neq l_1,那么 vvww 的 LCA 也是 lxl_x。考虑反证法,如果 vvww 的 LCA 不是 lxl_x 的话,那么 lxl_x 必然在 l1l_1 的子树中,由于 x>1x > 1,所以 lxl_x 到根的距离必然小于 l1l_1 到根的距离,这与「lxl_xl1l_1 的子树中」这一事实矛盾。

基于这一个事实,我们可以发现,所有 LCA 是 l1l_1 的一堆点,都可以被看作一个点(每个点对之后的 ll 的贡献都是一样的)。所以对于 l2l_2 来说,可考虑的点就至多只有 k1k - 1 个了。同理,所有 LCA 是 l2l_2 的一堆点,又可以被看作一个点。所以对于 l3l_3 来说,可考虑的点就至多只有 k2k - 2 个了。一直压缩下去,对于 lk1l_{k - 1} 来说,可以考虑的点就至多只有 22 个了。至于 lkl_k 至多只有一个点可考虑,无法形成新的 LCA。所以 lkl_k 不可能存在。


Read full article from 虚树学习笔记 | Sengxian's Blog


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts