导航:首页 > 源码编译 > unionfind算法

unionfind算法

发布时间:2024-06-19 17:03:34

⑴ 涓岖浉浜ら泦 (disjointSet)


鎺㈢储DisjointSet镄勫ゥ绉桡细FindUnion绠楁硶镄勭簿杩


鍦ㄦ暟鎹缁撴瀯镄勫囧欎笘鐣岄噷锛DisjointSet锛堜笉鐩镐氦闆嗭级</锛屽傚悓涓搴фˉ姊侊纴杩炴帴镌鍏幂礌镄勭瓑浠峰叧绯汇傚畠镄勬牳蹇冩搷浣滐纴Find鍜孶nion锛岀姽濡傛帰绱㈣糠瀹镄勬寚鍗楅拡锛屽紩棰嗘垜浠鐞呜В闆嗗悎镄勫悎骞朵笌镆ユ垒銆备粖澶╋纴鎴戜滑灏嗘洿娣卞叆鍦版帰绱㈠叾涓镄刄nion杩愮畻锛屽挨鍏舵槸濡备綍浼桦寲Find镎崭綔锛屾彁鍗囨晥鐜囥


𨱍宠薄涓涓嬶纴姣忎釜鍏幂礌灏卞儚涓涓镫鐗圭殑瀛楁瘝锛岃娈isjointSet鏄鎴戜滑镄勫瓧姣嶈〃锛岄氲繃涓嬫爣𨱒ユ爣璁版疮涓鍏幂礌镓灞炵殑闆嗗悎銆傚綋阆囧埌Find镎崭綔镞讹纴鎴戜滑镄勭洰镙囨槸镓惧嚭瀛楁瘝x镓鍦ㄧ殑瀛楁瘝琛ㄣ傚叧阌鍦ㄤ簬锛屾垜浠鍏虫敞镄勪笉鏄鍝涓瀛楁瘝鏄鍝涓锛岃屾槸瀹冧滑鏄钖﹀叡浜钖屼竴涓瀛楁瘝琛锛岃繖涓镣瑰湪Find(a)==Find(b)镄勭瓑寮忎腑寰椾互浣撶幇銆


绠鍗曞湴钖埚苟涓や釜闆嗗悎锛Union镎崭綔</鍙鑳芥樉寰楃洿瑙傦纴浣嗗綋鎴戜滑瑕侀珮鏁埚湴澶勭悊澶ч噺鍏幂礌镞讹纴闂棰桦氨鍑虹幇浜嗐傛瘆濡傦纴濡傛灉鐩存帴镓ц孶nion(4,5)锛屽彲鑳戒细瀵艰嚧娣卞害镆ユ垒锛孎ind镄勬ц兘鐡堕堢敱姝ゆ樉鐜般备负浜呜В鍐宠繖涓闂棰桡纴鎴戜滑寮曞叆浜嗘寜澶у皬鍜岄珮搴﹁繘琛屽悎骞剁殑绛栫暐銆


鎸夊ぇ灏忔眰骞</镄勬敼杩涚増涓锛屾垜浠阃氲繃姣旇缉闆嗗悎镄勫ぇ灏忔垨楂桦害𨱒ュ喅瀹氩悎骞剁殑鏂瑰悜锛岄伩鍏崭笉蹇呰佺殑阃掑綊銆傝繖镙凤纴鍗充娇澶氭℃墽琛孶nion锛孎ind(8)镄勬煡镓炬椂闂翠篃浼氭樉镢楃缉鐭銆傝璺寰勫帇缂杩欎竴绛栫暐锛屽氨鏄鍦‵ind镎崭綔涓娣诲姞镵鏄庣殑浼桦寲锛屼娇寰楁疮娆℃煡镓鹃兘灏介噺鍑忓皯灞傜骇锛屽ぇ澶ф彁楂樻晥鐜囥


璺寰勫帇缂╀笌鎸夊ぇ灏忔眰骞舵槸鐩歌緟鐩告垚镄勶纴瀹冧滑鍏卞悓鎻愬崌浜嗙畻娉旷殑镐ц兘銆傜劧钥岋纴璺寰勫帇缂</鎸夐珮搴︽眰骞骞朵笉瀹屽叏鍏煎癸纴锲犱负铡嬬缉钖庣殑缁撴瀯闅愯棌浜嗛珮搴︿俊鎭锛岃繖鍦ㄥ悓镞朵娇鐢ㄦ椂闇瑕佽皑鎱庡勭悊锛屾湁镞朵细鍒╃敤涓涓浼拌″硷纴濡傜З锛屾潵杈呭姪鍐崇瓥銆


鍦ㄨ繖涓鎺㈢储镞呯▼涓锛屾垜浠涓嶆柇浼桦寲锛岃拷姹傛晥鐜囦笌绮剧‘镐х殑骞宠銆傞氲繃鐞呜ВDisjointSet镄勬疮涓缁呜妭锛屾垜浠涓崭粎鑳借В鍐冲疄闄呴梾棰桡纴镟磋兘棰嗙暐鏁版嵁缁撴瀯镄勫阀濡欎箣澶勚傝╂垜浠涓璧峰湪浠g爜镄勪笘鐣屼腑锛岄嗙暐FindUnion绠楁硶镄勭簿杩涗笌榄呭姏钖э紒


⑵ 克鲁斯卡尔算法是怎样判断是否构成了回路

使用遍历方法,同时存储他们的父亲节点,如果父亲节点不一样,就说明有回路

⑶ 使用加权规则和压缩规则实现UNION和FIND算法

UNION(1,2);UNION(3,4);UNION(5,6);UNION(7,8);UNION(1,3);UNION(5,7);
FIND(8); 输出结果是5;
UNION(1,5);
FIND(8); 输出结果是1.
我所理解的Find(i)算法是将含有i的parent暂时(在合并的过程中的父母)记住,然后继续合并一些集合之后在进行查找,就可以在刚刚所求得的parent的基础上继续查找,提高了效率。

阅读全文

与unionfind算法相关的资料

热点内容
郑州app积分商城哪里好 浏览:610
7za命令解压zip 浏览:906
硬盘加密无法进入系统 浏览:560
四叶花算法 浏览:741
宝宝滤镜app哪里下载 浏览:1002
java保护代码 浏览:806
游戏海外服务器什么意思 浏览:568
快手网红程序员排名 浏览:99
首先会通过什么寻找服务器的ip地址 浏览:199
网页代码加密解码 浏览:285
wyks1ms文件夹 浏览:93
什么app可以看柯南高清 浏览:425
加密的盘文件恢复 浏览:22
绝对路径能查找隐藏文件夹吗 浏览:568
做抖音相册用什么图片app 浏览:726
pc怎么打开sftp服务器 浏览:998
中长跑用什么app 浏览:943
hlddz是什么文件夹怎么换盘 浏览:458
oppo主题编译器下载 浏览:807
其他文件夹是什么意思 浏览:545