今�Hの国の呵呵君: [Data Structure]Union Find



今�Hの国の呵呵君: [Data Structure]Union Find

[Data Structure]Union Find


支持的操作如下:
  • public void union(int p, int q) 把 p 和 q 连起来
  • public int find(int p) 找到 p 的 root
  • public boolean connected(int p, int q) 查看 p 和 q 是不是相连的

1. union

最简单的union操作就是从当前 p 和 q 一直找到 pRoot 和 qRoot,然后把 pRoot 的 parent设置成qRoot,这样时间复杂度是 O (n),如果连接的时候我们一直把 size 较小的那个 tree 连向 size 较大的 tree,可以优化到 O(log n)

2. find

size balancing优化后的复杂度是 O(log n),我们可以做的优化的是,在我们从 p 到 root 的过程中,把路径上所有节点指向 root,通过一个简单的递归可以实现,从底部到 root,拿到 root 后再一层一层 return 回来, 同时把路径上的节点指向 root。 经过 path compression 的优化后,时间复杂度,可以达到 O(lg *n),十分接近常数时间复杂度。

3. connected

判断 p 和 q 的 root是不是相等即可

Read full article from 今�Hの国の呵呵君: [Data Structure]Union Find


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