当前位置:网站首页>Explanation of parallel search set theory and code implementation
Explanation of parallel search set theory and code implementation
2022-07-05 07:24:00 【BugMaker-shen】
List of articles
One 、 Concept
And lookups are tree like data structures , It is mainly used to solve some problems The problem of element grouping . Used to deal with some Disjoint Set Of Merge as well as Inquire about problem
The idea of joint search set is to represent the whole forest with an array , The root node of the tree uniquely identifies a collection , As long as we find the root of an element , You can determine which set it is in
Two 、 And look up the construction process
Let's first explain the construction process of the search set
Father Son
1 3
1 2
5 4
2 4
6 8
8 7
Let's assume that the above nodes are in a set , On the left is the parent node , On the right is the child node
For the first four groups of data , We construct the following structure

There is a problem , According to the first 4 When constructing a set with group data , Should put the 4 The root node of the tree is the same as 2 The root node of the tree is connected , The correct set structure is as follows :

In the process of constructing and searching sets , It's not simply connecting two nodes , Instead, connect the root node of the tree where the node is located
Determine whether two nodes are in a set , Judge whether the root node of the tree where these two nodes are located is the same
We then construct a set of the last two sets of data 
The above kind of direct handle 7 Put it in 8 The following is wrong , We just said , Merging two sets is to merge the root nodes of two trees .7 Become the root node of a tree alone , and 6 A merger , The correct combination is as follows :

Through the above construction process , Here is a summary :
- In the process of constructing and searching sets , It's not simply connecting two nodes , Instead, connect the root node of the tree where the node is located ( Don't care about the parent-child relationship of the root node )
- Determine whether two nodes are in a set , Judge whether the root node of the tree where these two nodes are located is the same
3、 ... and 、 Code implementation
When implemented on code , Whether merging or querying , We need to find the root node of the tree where the node is located , Therefore, you need to record the parent node
The main idea : The position of array elements corresponding to each node , Store the number of its parent node
How to initialize ?
Because we say that the root node of the tree where each independent node is located is itself , So we initialize with its own node number
When did you find the roots ?
When x = arr[x] When equal , Indicates that its parent node is itself , It means that the root of the tree is itself
The initialization of parallel search set is as follows :

The forest we constructed is represented by union search set as follows

Traversal array , By comparing whether the element value and subscript are the same, we can get and check how many tree roots there are in the set . You can also see from the picture , node 1 and 6 It's the root
#include <iostream>
using namespace std;
const int SIZE = 9;
int parent[SIZE];
// return x The number of the root node of the tree
int find_root(int x) {
if (x <= 0 || x >= SIZE) {
return -1;
}
while (x != parent[x]) {
x = parent[x];
}
return x;
}
// Recursive version of the query
int cur_find_root(int x) {
if (x <= 0 || x >= SIZE) {
return -1;
}
if (x == parent[x]) {
return x;
}
else {
return cur_find_root(parent[x]);
}
}
// Merge x and y Where the collection is
void merge(int x, int y) {
x = find_root(x);
y = find_root(y);
if (x != y) {
// x and y In a set, there is no need to merge , If you are not in a set, you need to merge
parent[y] = x;
// parent[x] = y;
}
}
int main() {
for (int i = 0; i < SIZE; i++) {
parent[i] = i;
}
int x, y;
for (int i = 0; i < 6; i++) {
cin >> x >> y;
merge(x, y);
}
cout<<(find_root(2) == find_root(8) ? "YES" : "NO")<<endl;
return 0;
}
边栏推荐
- Use of Pai platform
- Ethtool principle introduction and troubleshooting ideas for network card packet loss (with ethtool source code download)
- What is soda?
- [untitled]
- list. files: List the Files in a Directory/Folder
- Unconventional ending disconnected from the target VM, address: '127.0.0.1:62635', transport: 'socket‘
- 二分查找(折半查找)
- 借助 Navicat for MySQL 软件 把 不同或者相同数据库链接中的某数据库表数据 复制到 另一个数据库表中
- Basic series of SHEL script (II) syntax + operation + judgment
- Ugnx12.0 initialization crash, initialization error (-15)
猜你喜欢

Three body goal management notes

Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘

Mathematical analysis_ Notes_ Chapter 8: multiple integral

(tool use) how to make the system automatically match and associate to database fields by importing MySQL from idea and writing SQL statements
![[software testing] 03 -- overview of software testing](/img/1e/0b6458160e34e43f021ea4797de70a.jpg)
[software testing] 03 -- overview of software testing

PHY drive commissioning - phy controller drive (II)

Docker installs MySQL and uses Navicat to connect

一文揭开,测试外包公司的真实情况

Literacy Ethernet MII interface types Daquan MII, RMII, smii, gmii, rgmii, sgmii, XGMII, XAUI, rxaui

How to deal with excessive memory occupation of idea and Google browser
随机推荐
2022 PMP project management examination agile knowledge points (7)
I can't stand the common annotations of idea anymore
The problem of configuring opencv in qt5.13.2 is solved in detail
Ethtool principle introduction and troubleshooting ideas for network card packet loss (with ethtool source code download)
1290_ Implementation analysis of prvtaskistasksuspended() interface in FreeRTOS
NPM and package common commands
Graduation thesis project local deployment practice
Ugnx12.0 initialization crash, initialization error (-15)
网易To B,柔外刚中
PostMessage communication
list. files: List the Files in a Directory/Folder
Unforgettable summary of 2021
Eclipse project recompile, clear cache
Oracle code use
C#学习笔记
Shadowless cloud desktop - online computer
Idea shortcut key
(top) pretty girl binary color code portal
Do you choose pandas or SQL for the top 1 of data analysis in your mind?
Simple use of timeunit