分散コンピューティング制御効率化のための平方分割手法による動的グラフにおける最小全域木クエリ処理
8
0
0
全文
(2) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2016-AL-158 No.9 2016/6/25. . ͔͠͠ɼઌʹड़ͨΑ͏ʹແઢ௨৴ͷίετՄ༻ੑप ลڥͷมԽͷӨڹΛड͚มԽ͢ΔͨΊɼͦΕΛදͨ͠ݱ άϥϑมԽ͢ΔɽैͬͯɼάϥϑͷมԽΛѻ͏ख๏͕ඞ.
(3) . ཁͱͳΔɽ. 1.2 ຊڀݚͷత. ਤ1. 2 छྨͷΫΤϦ. ຊͱ͜͏ߦͰڀݚҎԼͷͰ͋Δɽ. ( 1 ) पลڥͷແઢ௨৴ͷӨͱڹࢄίϯϐϡʔςΟϯ ά੍͍ͯͭʹޚड़ɼ௨৴ίετ࠷খԽͷҙٛΛࣔ͢. ͳωοτϫʔΫΛར༻͢Δ͕࣌ؒॖ͠ɼ௨৴ʹඞཁͳి ྗ͕࣌ؒݮগ͢Δɽ. ( 2 ) ΛάϥϑʹఆࣜԽ͠ɼมߋΫΤϦΛಋೖ͢Δ. 3. ͷఆࣜԽ. ( 3 ) άϥϑมߋΫΤϦΛޮతʹॲཧ͢Δख๏ΛఏҊ͢Δ. 3.1 άϥϑɾMST. ( 4 ) ఏҊख๏ͷཧղੳΛߦ͏ ( 5 ) طଘख๏ͱఏҊख๏Λ࣮͠ɼؒ࣌ࢉܭΛൺֱ͢Δ. 2. ࢄίϯϐϡʔςΟϯά੍ޮޚԽ 2.1 ϞόΠϧ্ثػͷࢄίϯϐϡʔςΟϯά੍ޚ ϞόΠϧ্ثػͷࢄίϯϐϡʔςΟϯάͰɼϞόΠ ϧ͕܈ثػωοτϫʔΫΛߏ͢Δɽ ి௨৴ʹ͓͍ͯɼΞϯςφͷੑೳͱྗిͱڑͷ 2 λ ؔΛද͕ࣜ͢ PPrt = 4πD Gt Gr ʢFriis ͷୡެࣜʣͰ͋ Δ [1]ɽ͜͜ͰɼPr ड৴ిྗΛද͠ɼPt ૹ৴ిྗΛද ͢ɽGt , Gr , λ ΞϯςφͷੑೳిͷΛද͢มͰ. άϥϑͱɼू߹ V ͱลू߹ू߹ E ⊆ V 2 ͷ. G = (V, E, w) Ͱ͋ΔɽॏΈ͖άϥϑͱɼάϥϑʹɼॏ Έؔ w : E → Z+ ΛՃ͑ͨ (V, E, w) Ͱ͋ΔɽຊจͰѻ ͏άϥϑແάϥϑͷΈͰ͋ΔͨΊɼҎ߱ແάϥϑͷ ͜ͱΛ୯ʹάϥϑͱॻ͖ɼ(u, v) = (v, u) Ͱ͋Δͱ͢Δɽ· ͨɼಉҰͷΛ݁Ϳล (v, v) ∈ E ଘࡏͤͣɼ·ͨɼάϥ ϑৗʹ࿈݁Ͱ͋ΔͱԾఆ͢Δɽ ࿈݁ͳάϥϑͰ͋ͬͯด࿏Λ͍ͳ·ؚάϥϑ (V, E) Λ ͱΑͿɽάϥϑ͕ͷͱ͖ɼ|E| = |V| − 1 Ͱ͋Δɽ (V, T ) ؚ͕ΉลͷॏΈͷ૯ e∈T w(e) ΛͷॏΈͱͿݺɽ͋Δ άϥϑ G = (V, E) ʹର͠ɼ (V, T ) Λ G ͷશҬͱͿݺɽG. ͋Δ͕ɼར༻͢ΔपΛݻఆ͢Δͱఆͱݟ၏ͤ. ͷશҬͷɼॏΈ͕࠷খͷͷΛ G ͷ࠷খશҬ ( MST. Δɽࣜ ?? ͔Βɼແઢ௨৴ʹΑΔϞόΠϧؒثػͷ௨. : Minimum Spanning Tree ) ͱͿݺɽҎ߱ MST ͱॻ͘ɽ. ৴ɼͷҠಈͷӨڹΛड͚ͯՄ༻ੑඞཁిྗ͕มԽ ͢Δͱ͑ݴΔɽ·ͨɼোͷӨڹΛड͚ͯ௨৴Մೳڑ ૹ͕มԽ͢Δ [2]ɽ. 3.2 άϥϑมߋΫΤϦͷؼண Ϟ ό Π ϧ ث ػͷ ू ߹ Λ V ͱ ͠ ɼू ߹ E = {(u, v) |. 2 ثػu, v ∈ V ؒͰ௨৴Մೳ } ΛͱΔɽؔ w : E → Z+. 2.2 ੍ޚͷޮԽͷͨΊͷωοτϫʔΫߏ. Λ w((u, v)) := u, v ؒͷ௨৴ʹ͔͔Δίετ Ͱ͋Δؔͱ. 2.2.1 ωοτϫʔΫ্ͷଓঢ়ଶΛ͋ΒΘ͢. ͢Εɼάϥϑ G = (V, E, w) ͋Δ࣌Ͱར༻Մೳͳ௨৴. ࢄίϯϐϡʔςΟϯά੍͍͓ͯʹޚɼͱ͍͏τϙ ϩδͷωοτϫʔΫΛߏ͢Δ͜ͱͰɼޮతͳ੍ޚΛ࣮ ͖ͰݱΔ [3]ɽɼϞόΠϧ܈ثػΛ૬ʹޓଓ͢Δߏ ͱͯ͠ߏ͕࠷୯७ͳͷͰ͋Δͱ͑ݴΔɽτϙϩ δ͕ͱͳ͍ͬͯΔͱ͖ɼωοτϫʔΫதͷҙͷ͔ثػ Βผͷҙͷثػͷૹܦ࿏ͨͩҰͭʹఆ·Δɽ. 2.2.2 ωοτϫʔΫߏͷมԽͷରԠ 2.1 અͰड़ͨΑ͏ʹɼແઢ௨৴पғͷʹڥΑͬͯ ௨৴ʹඞཁͳిྗ௨৴Մೳͳ͕ڑมԽ͢Δɽ ؒثػͷ௨৴ʹফඅిྗͰίετΛఆٛͰ͖Δ ͷͰɼ௨৴ͷू߹Ͱ͋ΔωοτϫʔΫશମͷίετ ௨৴ͷίετͷͱͯ͠ఆٛͰ͖Δɽ௨৴ͷίετՄ༻ ੑ͕ಈతʹมԽ͢ΔதͰɼ֤࣌ʹ͓͍ͯ࠷খίετͰ࣮ ͖ͰݱΔωοτϫʔΫΛߏ͢Δ͜ͱ͕ɼίετΛ࠷খԽ. Λද͢ɽ࠷దͳωοτϫʔΫɼG ͷ MST ʹରԠ͢Δɽ ωοτϫʔΫͷมԽΛѻ͏ͨΊʹɼάϥϑʹର͢ΔҎԼ ͷೋͭͷมߋૢ࡞Λఆٛ͢Δɽ. ( 1 ) add(u, v, x) E ʹ (u, v) ΛՃ͑ w((u, v)) ← x ͱ͢Δ ( 2 ) remove(u, v) E ͔Β (u, v) Λআ͢Δ 2 छྨͷΫΤϦΛਤ 1 ʹࣔ͢ɽਤʹ͓͍ͯɼଠ͍ઢͰඳ ͔Ε͍ͯΔล͕ΫΤϦʹΑΓมԽ͢ΔลͰ͋Δɽ2 ͭͷૢ ࡞ add ͱ remove ٯʹ͍ޓͷૢ࡞ͱͳ͍ͬͯΔɽ ͋Δ࣌ؒൣғʹ͓͚Δ௨৴ͷঢ়ଶมԽɼ্هΫΤϦͷ ྻͱͯ͠ද͖ͰݱΔɽมԽ͢ΔάϥϑΛಈతάϥϑͱͿݺɽ. 4. άϥϑมߋͷख๏ 4.1 طଘख๏. ͢Δ͜ͱʹ͕ܨΔɽ࠷খίετͰ࣮͖ͰݱΔωοτϫʔΫ. ಈతͰͳ͍άϥϑͷ MST ΛٻΊΔख๏ͱͯ͠ɼPrim ͷ. ʹରԠ͢ΔΛ࠷খશҬͱ͏ݴɽ࣌ؒͰมԽޙͷ࠷খ. ΞϧΰϦζϜ [4], [5] ͱ Kruskal ͷΞϧΰϦζϜ [4], [6] ͕. શҬΛٻΊωοτϫʔΫΛ࠶ߏ͢Δ͜ͱͰɼඇޮత. ͋ΔɽPrim ͷΞϧΰϦζϜΛ༻͍ͯಈతάϥϑ্ͷ MST. ⓒ 2016 Information Processing Society of Japan. 2.
(4) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2016-AL-158 No.9 2016/6/25. ΫΤϦΛॲཧ͢Δ߹ɼมߋΫΤϦΛ Q ճॲཧ͢ΔͨΊʹ O(Q|E| log |V|) ͕͔͔࣌ؒΔɽKruskal ͷΞϧΰϦζϜΛ ༻͍ͯಈతάϥϑ্Ͱͷ MST ΫΤϦΛॲཧ͢Δ߹ɼม ߋΫΤϦΛ Q ճॲཧ͢ΔͨΊʹ O(Q|E| log |E|) ͕͔࣌ؒ ͔Δɽ. . Kruskal ͷΞϧΰϦζϜΛར༻ͨ͠ΑΓޮతͳΞϧΰ. .
(5) . ϦζϜͱͯ͠ɼลॏΈʹؔͯ͠ঢॱιʔτࡁΈͷลϦετ Λอ࣋͠ɼมߋΫΤϦͷͨͼʹιʔτࡁΈϦετૠೖɾ আ͢Δ͜ͱʹΑͬͯ৽ͨͳιʔτࡁΈลϦετΛಘΔΞ. ਤ 2 ͷΫϥελϦϯά. ϧΰϦζϜΛߏͰ͖Δɽ͜ͷख๏Λ Enhanced Kruskal ͱ ͢ʹͱ͜ͿݺΔɽEnhanced Kruskal Λ༻͍ͯมߋΫΤϦΛ. Q ճॲཧ͢Δʹ O(Q|E|) ͕͔͔࣌ؒΔɽ ۙతʹͬͱߴʹಈ࡞͢Δͷ Enhanced Kruskal Ͱ͋Δɽ͜ͷ͜ͱ͔Βɼطଘख๏Λ༻͍ͯάϥϑมߋΫΤ ϦΛ Q ॲཧ͢Δʹ O(Q|E|) ͕࣌ؒඞཁͰ͋Δͱ͑ݴΔɽ. 4.2 ఏҊख๏ άϥϑ G = (V, E) ͷมԽɼҎԼͷ 4 ௨ΓʹྨͰ͖Δɽ. ( 1 ) ล͕Ճ͞Εɼมߋޙͷ MST ͕ͦͷลΛؚΉͱ͖ ( 2 ) ล͕Ճ͞Εɼมߋޙͷ MST ͕ͦͷลΛ͖ͱ͍ͳ·ؚ ( 3 ) ล͕আ͞Εɼมߋલͷ MST ͕ͦͷลΛؚΉͱ͖ ( 4 ) ล͕আ͞Εɼมߋલͷ MST ͕ͦͷลΛ͖ͱ͍ͳ·ؚ (2) ͱ (4) ͷ߹ MST มԽ͠ͳ͍ɽ. ෦ล ֎෦ล ਤ 3 ෦ลͱ֎෦ลΛநग़ͨ͠ਤ. ʹ͍ͯͮجू߹Λׂ͠ɼͦΕΛลू߹ׂͷج४ ͱ͢Δɽண͍ͯ͠Δ (3) ͷέʔε T ͔Β͋Δล (u, v) ΛऔΓআ͍ͨ߹ΛؚΉ͕ɼ͜ͷ߹ T = T \ {(u, v)} ͱ ͯ͠άϥϑ S = (V, T ) ͷߏΛج४ͱ͢Δɽׂʹ͓͍. (1) ͷͱ͖ɼMST ʹลΛՃ͑Δͱด࿏͕Ͱ͖Δɽ͜ͷ. ͯɼू߹Λ n ݸͷ෦ू߹ V0 , V1 , . . . , Vn−1 ⊆ V ʹ. ߹ɼͰ͖ͨด࿏͔ΒॏΈ͕࠷େ͖͍ลΛऔΓআ͘͜ͱͰɼ. ׂ͠ɼ∀i, j(0 ≤ i, j < n, i j), Vi ∩ V j = ∅ ͱͳΔΑ͏ʹ͢Δɽ. άϥϑมԽޙͷ MST ͱͳΔͷͰɼ͜ͷ߹ล 2 ຊ͚ͩ. ߋʹ֤ Vi ʹ͍ͭͯɼVi ʹΑΔ S ͷ༠ಋ෦άϥϑ͕࿈݁. MST ͕มԽ͢Δɽ. ͱͳΔΑ͏ʹ͢Δɽ͜ͷׂΛΫϥελϦϯάͱͼݺɼ. (3) ͷͱ͖ɼMST ͔ΒลΛऔΓআ͘ͱೋͭͷ࿈͔݁. ׂޙͷ֤ू߹ΛΫϥελͱͿݺɽΫϥελϦϯάͷྫ. ΒͳΔάϥϑʹͳΔɽ͜ͷ߹ɼҟͳΔ࿈݁ʹଐ͢Δ. Λਤ 2 ʹࣔ͢ɽਤͷάϥϑʹ͓͍ͯɼଠࣔͨ͘͠ล͕άϥ. ؒΛ݁ͿลͷͰɼลॏΈ͕࠷খͷͷΛՃ͑Δ͜ͱ. ϑͷ MST ؚ͕ΉลͰ͋ΔɽഁઢͰඳ͔ΕͨͰғΘΕͯ. ͰɼάϥϑมԽޙͷ MST ͱͳΔɽैͬͯɼ͜ͷ߹ล. ͍Δ͕ͦ܈ΕͧΕͷΫϥελͰ͋Δɽ. 2 ຊ͚ͩ MST ͕มԽ͢Δɽ Ҏ্ʹΑΓɼ(1), (2), (3), (4) ͷ͍ͣΕͷ߹ͰɼMST ͷมԽߴʑ 2 ຊͷลͰ͋Δɽ. 4.1 અͰࣔͨ͠ΞϧΰϦζϜ͍ͣΕάϥϑ͕มԽ͢ ΔͨͼʹશͯͷลΛௐ MST Λ࠶͍ͯ͠ࢉܭΔ͕ɼ্Ͱ ࣔͨ͜͠ͱΛ౿·͑ΔͱແବͳࢉܭΛ͍ͯ͠ΔɽఏҊख๏ Ͱ֤࣌ʹ͓͚Δ MST Λอ࣋͠ɼมߋΫΤϦʹΑΓม Խ͢ΔลΛޮతʹ୳ࡧ͢Δ͜ͱͰޮԽ͢Δɽ ީิͱͳΔลͷ (3) ͷέʔε͕࠷ଟ͍ͨΊɼ(3) ͷ. ลू߹ͷׂͰɼ֤ลू߹͕࣍ͷ݅ͷ͍ͣΕ͔Λຬ ͨ͢Α͏ʹ͢Δɽ. ( 1 ) ͋Δ i ( 0 ≤ i < n ) ͕ଘࡏͯ͠ɼลू߹ؚ͕Ή֤ลʹͭ ͍͕ͯͲͪΒ Vi ʹଐ͢Δ. ( 2 ) ͋Δ i, j ( 0 ≤ i, j < n, i j ) ͕ଘࡏͯ͠ɼลू߹ؚ͕Ή ֤ลͷͷҰํ͕ Vi ʹଐ͠ɼଞํ͕ V j ʹଐ͢Δ લऀͷ݅Λຬͨ͢ลΛɼΫϥελͷ෦Λ݁Ϳ͜ͱ͔Β ෦ลͱͿݺɽऀޙͷ݅Λຬͨ͢ลΛɼҟͳΔΫϥελ. έʔεΛߴԽ͢Δ͜ͱ͕ߴԽͷͨΊͷओͱͳΔɽ. ؒΛ݁ͼɼΫϥελͷ֎෦Λ௨Δ͜ͱ͔Β֎෦ลͱͿݺɽ. 4.2.1 ลू߹ͷฏํׂ. ֤ΫϥελɼΫϥελͷରʹ͍ͭͯରԠ͢Δลू߹͕ଘࡏ. 4.2 અͷ (3) ͷέʔεʹ͓͍ͯลআ ʹޙMST ʹՃ͑Δ. ͠ɼશͯͷล͍ͣΕ͔ͷลू߹ʹ֘͢ΔɽMST ؚ͕Ή. ลͷ୳ࡧʹ O(|V|2 ) ͕࣌ؒඞཁͱͳΔɽ͜Εɼ୳ࡧର. ลʹ͍ͭͯɼT ʹՃ͑ͯ MST Λߏங͢Δࡍʹ͏ลͱ. ͱͳΔลϦετͷ͕͞ O(|V|2 ) ͱͳΔͨΊͰ͋ΔɽఏҊ. ͳΓಘͳ͍ͷͰɼׂͨ͠ลू߹ʹؚΊͳ͍ɽਤ 2 ͔Β. ख๏ͰɼลϦετΛׂͯ͠ෳͷลϦετΛอ࣋͢Δɽ. ෦ลͱ֎෦ลΛநग़ͨ͠ਤΛਤ 3 ʹࣔ͢ɽ. ลू߹Λׂ͢Δʹ͋ͨΓɼ·ͣ MST S = (V, T ) ͷߏ ⓒ 2016 Information Processing Society of Japan. ׂ֤ͨ͠ลू߹Λද͢ลϦετɼ4.1 ͷ Enhanced. 3.
(6) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2016-AL-158 No.9 2016/6/25. . Kruskal ͱಉ༷ʹॏΈʹؔͯ͠ঢॱιʔτࡁΈͷঢ়ଶΛอ ͭɽ͜ͷ߹ɼ(3) ͷέʔεͰ MST அ ʹޙMST ʹՃ͑. . . Δล͍ͣΕ͔ͷลϦετͷઌ಄ʹ͋Δɽैͬͯɼลू߹ Λ m ʹݸׂͨ͠ͱ͢ΕɼMST ʹՃ͑Δลͷ୳ࡧ֎ ෦ลू߹ʹରԠ͢ΔลϦετʹ͍ͭͯઌ಄ཁૉ͚ͩΛର. . . . . . . ʹ͢ΕΑ͍ͷͰ O(m) ࣌ؒͰ࣮ߦՄೳͰ͋Δɽ ू߹ͷׂͷํ๏ʹΑͬͯลͷू߹ͷׂ͕มΘΓɼ. . ลͷ୳ࡧʹඞཁͳྔࢉܭมΘΔɽఏҊख๏ͰɼΫϥε √ λ n ͕ |V| ఔͱͳΔΑ͏ʹׂ͢Δɽߏ͕ዞҙత. . . . Ͱͳ͍άϥϑͰ͜ΕΛ࣮͢ݱΔʹɼॴଐΫϥελ͕ܾఆ ͞Ε͍ͯͳ͍దͳ͔Β MST ্Ͱͷ෯༏ઌ୳ࡧΛߦ √ ͍ɼ๚ࡁΈ͔ͭΫϥελະܾఆͳ͕ |V| ͬͳʹݸ ͨ࣌ͰͦΕΒͷΛҰͭͷΫϥελͱ͢ΔॲཧΛɼະ ๚͕ແ͘ͳΔ·Ͱ܁ΓฦͤΑ͍ [7]ɽ͜ΕʹΑΓɼ √ ֤Ϋϥελʹଐ͢Δ͕ฏۉతʹ |V| ͳͱݸΔɽΫ √ ϥελ |V| ΛΫϥελͷฏۉαΠζ |V| Ͱׂͬ √ √ ͨఔͰ͋ΔͨΊɼ √|V||V| = |V| ΑΓɼΫϥελ |V|. . (ii) Ϋϥελͷ౷߹ ਤ 4 Ϋϥελͷׂɾ౷߹. ͷลू߹. ( 1 ) ci ͷ෦ลू߹. ݸఔͱͳΔɽΫϥελϦϯάͷʹࢉܭଓ͖ɼͨ͠ࢉܭΫ. ( 2 ) c j ͷ෦ลू߹. ϥελϦϯάʹ͍ͯͮجลू߹Λׂ͢ΔɽશͯͷลΛॏ. ( 3 ) ci , c j ؒͷ֎෦ลू߹. Έʹؔͯ͠ঢॱιʔτ͠ɼลϦετͷઌ಄͔ΒॱʹลΛৼ Γ͚Εɼลू߹ͷׂ O(|E| log |E|) = O(|V|2 log |V|) ࣌ؒͰྃ͢Δɽ. 4.2.2 ΫΤϦͷฏํׂ 5 ষͰࣔ͢Α͏ʹɼఏҊख๏ͰάϥϑτϙϩδͷมԽ ʹ߹ΘͤͯΫϥελϦϯάΛߋ৽͢Δɽ͜ͷͱ͖ɼάϥϑ ͷશମΛௐΔ͜ͱͳ͘ɼมԽͨ͠෦ͷपลͷΈΛ࠶Ϋ ϥελϦϯά͢Δ͜ͱͰؒ࣌ࢉܭΛॖ͢ΔɽͦͷͨΊɼ ෳͷมߋΫΤϦͷॲཧΛ௨ͯ͠ɼΫϥελϦϯά͕ཧ తͳঢ়ଶͰͳ͘ͳΔɽͦ͜ͰఏҊख๏ͰɼΫΤϦྻΛ ͋Δఔͷ͞ͷपͰظׂ͠ɼपظͷ։࢝࣌ʹάϥϑશ ମͷ෯༏ઌ୳ࡧΛߦͬͯΫϥελϦϯάΛ࠶͢ࢉܭΔɽ पظ |V| ʢลͷฏํࠜʣఔͱ͢Δɽ ͜ͷͱ͖ɼΫΤϦҰճ͋ͨΓͷ࣌ؒ ͕ྔࢉܭΩ(|V|) Ͱ͋. Λ౷߹͠ c i ͷ෦ลू߹ͱ͢ΔɽͦͷଞͷΫϥελ ck (. k {i, j} ) ʹ͍ͭͯɼೋͭͷลू߹ ( 1 ) c j , ck ؒͷ֎෦ลू߹ ( 2 ) ci , ck ؒͷ֎෦ลू߹ Λ౷߹͠ c i , ck ؒͷ֎෦ลू߹ͱ͢Δɽ͜ͷ݁Ռɼ౷߹ʹ ΑΓফ໓͢ΔΫϥελ c j ʹؔΘΔ෦ลɾ֎෦ลશͯ৽ ͨͳลू߹Ҡಈ͢Δɽ ลू߹ͷ౷߹ͷྫΛਤ 4 ʹࣔ͢ɽ(i) ʹ͓͚ΔΫϥελ. 1, 2 Λ౷߹͢Δͱɼ(ii) ʹ͓͚ΔΫϥελ 4 ʹͳΔɽ྆ਤʹ ͓͚ΔΫϥελ 3 ౷߹ʹؔΘΒͳ͍ΫϥελͰɼ্ هͷ ck ʹ͋ͨΔɽਤ 4 ʹ͓͚Δล a, b, c, d, e ͷྨΛࣔ͢ ͱҎԼͷΑ͏ʹͳΔɽ. ΕɼมߋΫΤϦ |V| ճ͝ͱͷ෯༏ઌ୳ࡧʹ͔͔Δ࣌ؒί. ( 1 ) a : Ϋϥελ 1 ͷ෦ล. ετఆഒͷࠩʹऩ·Δɽ6.1 અͰࣔ͢Α͏ʹ͜ͷ݅. ( 2 ) b : Ϋϥελ 2 ͷ෦ล. ॆ͞Εɼ|V| ճ͝ͱͷ࠶ΫϥελϦϯάͷঈ٫࣌ؒࢉܭ. ( 3 ) c : Ϋϥελ 1, 2 ؒͷ֎෦ล. ྔ O(1) ࣌ؒͱͳΔɽ. ( 4 ) d : Ϋϥελ 1, 3 ؒͷ֎෦ล. 5. άϥϑมߋख๏ͷৄࡉ. ( 5 ) e : Ϋϥελ 2, 3 ؒͷ֎෦ล. ఏҊख๏Ͱɼάϥϑͷมߋʹ߹ΘͤͯҰ෦ͷΫϥελ ͷΈΛมߋ͢Δɽ͜ΕʹΑΓɼάϥϑมߋΫΤϦͷͨͼʹ ΫϥελϦϯάͷ࠶ࢉܭΛ͢Δ͜ͱͳ͘มߋޙͷลू߹ ׂΛಘΔɽΫϥελϦϯάͷมԽʹ߹Θͤͯลू߹Λ౷ ߹ɾׂ͢Δ͜ͱͰɼมߋΫΤϦडཧʹޙ 4.2 અͰࣔ͠ ͨล୳ࡧ͕ՄೳͰ͋Δɽ. . (i) Ϋϥελͷׂ. Ϋϥελ 1, 2 ͷ౷߹ͷ݁Ռɼ(ii) ʹ͓͍ͯྨ͕มԽ͠ɼ ҎԼͷΑ͏ʹͳΔɽ. ( 1 ) a, b, c : Ϋϥελ 4 ͷ෦ล ( 2 ) d, e : Ϋϥελ 3, 4 ؒͷ֎෦ล Ҏ্Ͱࣔͨ͠Α͏ʹɼΫϥελ౷߹ͷ࣮ʹลू߹Λ ౷߹͢Δૢ࡞͕ඞཁͱͳΔɽೋͭͷลू߹Λ౷߹͢ΔΞϧ. 5.1 ลू߹ͷ౷߹ ೋͭͷΫϥελ ci , c j Λ ci ʹ౷߹͠ c i ͱ͢Δͱ͖ɼࡾͭ ⓒ 2016 Information Processing Society of Japan. ΰϦζϜ͕͋Εɼ͜ͷΞϧΰϦζϜΛෳճద༻͢Δ͜ ͱͰࡾͭҎ্ͷลू߹Λ౷߹Ͱ͖Δɽೋͭͷลू߹Λ౷߹. 4.
(7) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2016-AL-158 No.9 2016/6/25. Algorithm 1 MergeEdgeLists. Algorithm 3 SplitEdgeList. Require: es1, es2 are sorted edge list Ensure: es1, es2 will be empty list, result will be sorted 1: function MergeEdgeLists( es1, es2 ) 2: i = 0, j = 0 3: result = [] [] is a empty list 4: while True do 5: if i = |es1| then 6: result.append(es2) 7: break 8: else if j = |es2| then 9: result.append(es1) 10: break 11: end if 12: if w(es1[i]) ≤ w(es2[j]) then 13: result.appned(es1[i]) 14: i=i+1 15: else 16: result+.appned(es2[j]) 17: j= j+1 18: end if 19: end while 20: es1 = es2 = [] 21: return result 22: end function. Require: es is soted, f is a function that f : E → {True, False} Ensure: each element e ∈ result1 will satisfy f (e) = True and each element e ∈ result2 will not 1: function SplitEdgeList( es, f ) 2: result1 = [], result2 = [] 3: for all e ∈ es do 4: if f (e) then 5: result1.append(e) 6: else 7: result2.append(e) 8: end if 9: end for 10: return (result1, result2) 11: end function. Algorithm 2 MergeClusters 1: procedure MergeClusters ( i, j ) 2: inneri = MergeEdgeLists (innteri , innerj ) 3: inneri = MergeEdgeLists (inneri , outeri,j ) 4: for all k ∈ {c | c ∈ AllClusters \ {i, j}} do 5: outeri,k = MergeEdgeLists (outeri,k , outerj,k ) 6: end for 7: end procedure. Algorithm 4 SpliteCluster 1: procedure SplitCluster ( i, j ) = SplitEdgeList (inneri , (λe.True ⇔ 2: (inneri , innerj ) e is inner edge of cluster i )) = SplitEdgeList (inneri , (λe.True ⇔ 3: (innerj , outeri,j ) e is inner edge of cluster j )) 4: for all k ∈ {c | c ∈ AllClusters \ {i, j}} do 5: (outeri,k , outerj,k = SplitEdgeList (outeri,k , (λe.True ⇔ e is outer edge between clusters i, k )) 6: end for 7: end procedure. ૢ࡞ͳͷͰɼਤ 4 ͷ (ii) ͷঢ়ଶ͔Β (i) ͷঢ়ଶʹมԽ͢Δɽ ΫϥελΛׂ͢ΔͨΊʹลू߹Λׂ͢Δૢ࡞͕ඞ ཁͱͳΔɽҰͭͷลू߹Λɼลʹؔ͢Δ݅ʹ͍ͯͮجೋ ͭͷลू߹ʹׂ͢ΔΞϧΰϦζϜ͕͋ΕɼͦͷΞϧΰ. ͢ΔΞϧΰϦζϜͷٖࣅίʔυΛ Algorithm 1 ʹࣔ͢ɽؔ. ϦζϜΛ࿈ଓతʹద༻͢Δ͜ͱͰࡾͭҎ্ͷลू߹ͷ. MergeEdgeLists ɼes1, es2 ͷཁૉΛঢॱιʔτ͠. ׂՄೳͱͳΔɽลू߹ͱลʹؔ͢Δ݅Λද͢ߴ֊ؔ. ͨྻΛฦ͢ɽؔ MergeEdgeLists Λ༻͍ͯೋͭͷΫϥ. Λೖྗͱ͠ɼׂޙͷลू߹ͷΛฦ͢ΞϧΰϦζϜͷٖ. ελ i, j ͷ౷߹Λ࣮͢Δ͜ͱ͕Ͱ͖ΔɽΞϧΰϦζϜΛ. Algorithm 2 ʹࣔ͢ɽٖࣅίʔυதͷ inneri Ϋϥελ i ʹ ରԠ͢Δ෦ลू߹Λද͢ɽouteri,j Ϋϥελ i, j ؒͷ֎ ෦ลΛද͢ɽҎ߱ͷٖࣅίʔυಉ༷Ͱ͋Δɽ. ࣅίʔυΛ Algorithm 3 ʹࣔ͢ɽؔ SplitEdgeList ʹΑ Γลू߹ͷׂ͕࣮͖ͰݱΔɽؔ SplitEdgeList Λ༻͍ ͯΫϥελ i ΛೋͭͷΫϥελ i, j ʹׂ͢ΔॲཧΛ࣮͢ Δ͜ͱ͕Ͱ͖ΔɽΞϧΰϦζϜͷٖࣅίʔυΛ Algorithm. 4 ʹࣔ͢ɽ 5.2 ลू߹ͷׂ ลू߹ c Λׂ͠ೋͭͷลू߹ ci , c j ͱ͢Δͱ͖ɼc ͷ ෦ลू߹Λׂ͠ࡾͭͷลू߹. 5.3 ลͷআ আΫΤϦ remove(u, v) Λॲཧ͢Δखॱʹ͍ͭͯड़Δɽ. remove(u, v) ͷॲཧɼMST ͕ล (u, v) ΛؚΉ͔൱͔ʹΑͬ. ( 1 ) ci ͷ෦ลू߹. ͯҟͳΔɽ(u, v) ͕ MST ʹ·ؚΕ͍ͯͳ͍ͱ͖ɼ(u, v) ͕. ( 2 ) c j ͷ෦ลू߹. ଐ͢Δลू߹͔Β (u, v) ΛऔΓআ͘ͷΈͰ͋Δɽ. ( 3 ) ci , c j ؒͷ֎෦ลू߹. ͦ͏Ͱͳ͍߹ɼ·ͣ MST ͔Β (u, v) ΛऔΓআ͍ͯ. ͱ͢ΔɽͦͷଞͷΫϥελ ck ( ck c ) ʹ͍ͭͯɼc, ck ؒ. MST Λೋͭͷ࿈݁ʹ͚Δɽ͜ͷͱ͖ɼ(u, v) ͕෦. ͷ֎෦ลू߹Λׂ͠ɼ. ลͰ͋Ε u, v ͕ଐ͢ΔΫϥελΛׂ͢Δɽͦͷޙɼ࿈. ( 1 ) ci , ck ؒͷ֎෦ลू߹ ( 2 ) c j , ck ؒͷ֎෦ลू߹ ͷೋͭͷลू߹ͱ͢ΔɽΫϥελ౷߹Ϋϥελׂͷٯ. ⓒ 2016 Information Processing Society of Japan. ݁ؒΛ݁Ϳลͷ࠷͍ܰͷΛՃ͢Δ͜ͱͰ࠶ ͼ࿈݁ʹ͢Δɽׂͨ͠࿈݁ؒΛ݁ͿลɼҟͳΔ࿈ ݁ʹଐ͢Δ͕ଐ͢ΔΫϥελؒͷ֎෦ลͰ͋Δɽ ैͬͯɼՃ͢Δล֎෦ลू߹Λࠪ͢Δ͜ͱͰൃͰݟ. 5.
(8) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2016-AL-158 No.9 2016/6/25. Algorithm 5 RemoveEdge. Algorithm 6 AddEdge. 1: procedure RemoveEdge ( u, v ) 2: if Not MST.hasEdge(u, v) then 3: if cluster(u) = cluster(v) then 4: innercluster(u) .erase(u, v) 5: else 6: outercluster(u),cluster(v) .erase(u, v) 7: end if 8: return 9: end if 10: MST.remove edge((u, v)) 11: if cluster(u) = cluster(v) then 12: assign new cluster for vertices such that connected from v on MST and belongs to cluter( u) 13: SplitCluster(cluster(u), cluster(v)) 14: end if 15: c = cluster which has lightest head edge 16: MST.add edge(c[0]) 17: c.remove(c[0]) 18: MergeClusters (cluster(u), cluster(v)) 19: end procedure. 1: procedure AddEdge ( u, v, x ) 2: modify w to be w((u, v)) = x 3: e = (p, q) = most heavy edge in u-v path in MST 4: if w(e) ≤ x then 5: if cluster(u) = cluster(v) then 6: innercluster(u) .insert((u, v)) 7: else 8: outercluster(u),cluster(v) .insert((u, v)) 9: end if 10: return 11: end if 12: MST.remove edge(e) 13: if cluster(p) = cluster(q) then 14: assign new cluster for vertices such that connected from v on MST and belongs to cluter( u) 15: SplitCluster (cluster(p), cluster(q)) 16: end if 17: outerclusterp ,clusterq .insert(e) 18: MST.add edge((u, v)) 19: MergeClusters (cluster( u), cluster( v)) 20: end procedure. ͖ΔɽΞϧΰϦζϜΛ Algorithm 5 ʹࣔ͢ɽ ද [4] Λ༻͍ͨՄมྻΛ༻͍Δͱ͢Δɽ. 5.4 ลͷՃ ՃΫΤϦ add(u, v, x) Λॲཧ͢Δखॱʹ͍ͭͯड़Δɽ ॏΈ w ͷล (u, v) Λ MST ʹՃ͑ͨάϥϑΛߟ͑Δͱɼล. (u, v) ʹΑΓด࿏͕Ͱ͖Δɽ͜ͷด࿏ɼMST ্Ͱ 2 u, v ؒΛ݁Ϳύεͷʹɼ(u, v) ΛՃ͑ͨͷͰ͋Δɽ৽ͨ ͳ MST ΛಘΔͨΊʹด࿏͔Β࠷ॏ͍ลΛऔΓআ͘ඞཁ ͕͋Δ͕ɼऔΓআ͘ล࣍ͷ 2 ௨Γʹ߹͚Ͱ͖Δɽ. ( 1 ) (u, v) ΛऔΓআ͘ ( 2 ) ͦΕҎ֎ͷลΛऔΓআ͘ ͜Εɼ(u, v) ͷॏΈͱ u-v ύεதͰ࠷ॏ͍ลͷॏΈΛൺ ֱ͢ΕผͰ͖Δɽ ՃΫΤϦʹΑΓάϥϑʹՃͨ͠ลͰ͋Δ (u, v) Λด ࿏͔ΒऔΓআ͘߹ɼ(u, v) ΛରԠ͢ΔลϦετʹૠೖ ͢Δɽͦ͏Ͱͳ͍߹ɼu-v ύεதͰ࠷ॏ͍ลΛ MST. ·ͣجຊతͳૢ࡞ʹ͍ͭͯղੳ͢Δɽ࣍ͷͷΦʔμ શͯ O(|V|) Ͱ͋Δɽ. ( 1 ) ҰͭͷΫϥελͷ෦ลͷຊ ( 2 ) ֎෦ลू߹ͷݸ ( 3 ) Ұͭͷ֎෦ลू߹ؚ͕Ήลͷຊ Proof. ͋ΔΫϥελͷ෦ลͷ૯ɼΫϥελ෦͔ ΒೋͭͷΛબͿ߹ͤͷ૯Ͱ͋ΔͨΊɼೋ߲ √|V| √|V| ʹ͍͠ɽ = O(|V|) Ͱ͋ΔͷͰɼ͋ΔΫϥελ 2 2 ͷ෦ลͷ૯ O(|V|) ຊͰ͋Δɽ. . Proof. ֎෦ลू߹ͷ૯ɼҟͳΔΫϥελೋͭΛબͿ √ ߹ͤͷ૯Ͱ͋ΔɽΫϥελ O( |V|) ͋ͰݸΔͷ Ͱɼ෦ลू߹αΠζʹؔ͢Δٞͱಉ༷ʹ O(|V|) ͳͱݸ Δɽ. . ͔ΒऔΓআ͍ͯ MST Λೋͭͷ࿈݁ʹஅ͔ͯ͠Βɼ. Proof. ͋Δ֎෦ลू߹ؚ͕ΉลͷຊɼରԠ͢Δೋͭ. (u, v) Λ MST ʹՃ͑Δɽύε͔ΒऔΓআ͍ͨลɼରԠ. ͷΫϥελͷͦΕͧΕ͔ΒҰͭͣͭΛऔΓग़͢߹ͤ. ͢ΔลϦετૠೖ͢ΔɽΞϧΰϦζϜͷٖࣅίʔυΛ. ͷ૯Ͱ͋ΔɽҰͭͷΫϥελ͔ΒΛऔΓग़͢બͼํ √ O( |V|) ௨ΓͰ͋ΔɽͦΕͧΕͷΫϥελ͔ΒΛऔ. Algorithm 6 ʹࣔ͢ɽ. 6. ޮԽʹؔ͢Δ࣮݁ݧՌͱධՁ 6.1 ྔࢉܭղੳ݁Ռͱߟ ฏۉతͳঢ়ଶʹ͍ͭͯߟ͢ΔͨΊɼຊઅͰҎԼͷೋ ͭͷԾఆΛஔ্͍ͨͰఏҊख๏Λղੳ͢Δɽ. √ ( 1 ) Ϋϥελͷ૯ |V| ͋ͰݸΔ √ ( 2 ) ֤Ϋϥελͷ |V| ͋ͰݸΔ √ ද͕هࡶʹͳΔͷΛආ͚ΔͨΊɼҎԼͷٞͰ |V| √ Λ୯ʹ |V| ͱॻ͘ɽ·ͨɼྻΛ༻͢Δࡍʹಈతͳ ⓒ 2016 Information Processing Society of Japan. Γग़͢ૢ࡞ಠཱͰ͋ΔͨΊɼೋͭͷΫϥελ͔ΒҰͭͣ ͭΛऔΓग़͢બͼํͦΕͧΕͷΫϥελ͔ΒͷऔΓ √ ग़͠ํͷ૯ͷੵͰ͋Δैͬͯ O( |V|2 ) = O(|V|) ௨ΓͰ͋ Δɽ. . MST ͷҎԼͷૢ࡞ɼMST ΛྡϦετͰදͯ͠ݱ ͍Δͱ͢Ε࣌ؒ ྔࢉܭO(|V|) ࣌ؒͰ͋Δɽ. ( 1 ) ลͷՃ ( 2 ) ลͷআ ( 3 ) ͋ΔลΛؚΉ൱͔ΛௐΔ 6.
(9) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2016-AL-158 No.9 2016/6/25. ( 4 ) 2 u, v ؒͷύεΛٻΊΔ ࣍ ʹ ɼ5 Ͱ ఆ ٛ ͠ ͨ ؔ ɾख ଓ ͖ Λ ղ ੳ ͢ Δ ɽ. MergeEdgeLists (es1, es2) O(|es1|+|es2|) ࣌ؒͰಈ࡞͢Δɽ Proof.. MergeEdgeLists ͷ 12 ʙ 18 ߦͷ if จʹΑΓɼ. ྆ྻͷ֤ཁૉΛߴʑҰճͣͭ result ͷඌʹૠೖ͢Δɽ ঈ٫ O(1) ࣌ؒͷॲཧΛ |es1| + |es2| ճ࣮ߦ͢ΔͷͰɼঈ٫. O(|es1| + |aes2|) ࣌ؒͱͳΔɽ. ͋Δɽ֤Ϋϥελʹ͍ͭͯ SplitEdgeList Λ࣮ߦ͢ΔɽΫ √ ϥελ O( |V|) Ͱ͋ΔͨΊɼঈ٫ O(|V|) ࣌ؒͷॲཧΛ √ O( |V|) ճ࣮ߦ͢Δɽ √ Ҏ্ΑΓɼ SplitCluster O(|V| |V|) ࣌ؒͰಈ࡞͢. . Δɽ. 6.1.1 ลͷআ আΫΤϦ remove(u, v) Λॲཧ͢Δؔ RemoveEdge ͷ ࣮ʹඞཁͱͳΔૢ࡞ҎԼͷͷͰ͋Δɽ. ยํͷྻ͕ۭʹͳͬͨͱ͖ɼଞํͷྻΛ result ͷ ඌʹ࿈݁͢Δɽ͜ͷॲཧɼͲͪΒͷϦετ͕ͬͨͱ͠. ( 1 ) MST ͕͋ΔลΛؚΉ͔൱͔ΛௐΔ. ͯঈ٫ O(max(|es1|, |aes2|)) ࣌ؒͰ࣮ߦͰ͖Δɽ. ( 2 ) u, v ʹ͍ͭͯɼଐ͢ΔΫϥελΛͦΕͧΕௐΔ. Ҏ্ΑΓɼ MergeEdgeLists ঈ٫ O(|es1| + |es2|) ࣌ؒ Ͱಈ࡞͢Δɽ. . ·ͨɼลϦετͷ͞ O(|V|) Ͱ͋ΔͨΊɼ MergeEdge-. ( 3 ) ลϦετ͔Β (u, v) Λআ͢Δ ( 4 ) MST ͔Β (u, v) Λআ͢Δ ( 5 ) MST ͔ΒลΛҰຊऔΓআ͍ͨάϥϑ্Ͱɼv ͱ࿈͔݁ ͭॴଐΫϥελ͕ u ͱ͍͠Λྻ͠ڍɼॴଐΫϥ. Lists ঈ٫ O(|V|) ࣌ؒͰ͋Δɽ. √ MergeClusters (i, j) ঈ٫ O(|V| |V|) ࣌ؒͰಈ࡞͢Δɽ. ελΛมߋ͢Δ. (6). SplitCluster. Proof. ୈ 2, 3 ߦͰɼ MergeEdgeLists ʹΑΓ innerj ͱ. ( 7 ) Ϧετͷઌ಄ʹ͋Δล͕࠷͍ܰू߹ΛٻΊΔ. outeri,j Λ inneri ʹ౷߹͢Δɽ͜ΕΒͷॲཧɼঈ٫ O(|V|). ( 8 ) MST ʹลΛՃ͑Δ. ࣌ؒͰ࣮ߦͰ͖Δɽ ୈ 4 ʙ 6 ߦͷ for จʹ͓͍ͯɼk i, j Λআ͍ͨશͯͷΫ √ ϥελʹؔͯ͠ϧʔϓ͠ɼͦͷରͷݸ O( |V|) Ͱ͋ Δɽ֤Ϋϥελʹ͍ͭͯ MergeEdgeLists ʹΑΓ outeri,k √ ͱ outerj,k Λ౷߹͢ΔɽΫϥελ O( |V|) Ͱ͋ΔͨΊɼ √ ঈ٫ O(|V|) ࣌ؒͷॲཧΛ O( |V|) ճ࣮ߦ͢Δɽ √ Ҏ্ΑΓɼ MergeClusters O(|V| |V|) ࣌ؒͰಈ࡞͢ Δɽ. . SplitEdgeList (es, f ) ɼ݅ؔ f ͕ఆ࣌ؒͰॲཧͰ. ( 9 ) ลϦετͷઌ಄ཁૉΛআ͢Δ ( 10 ). MergeClusters Λ࣮ߦ͢Δ MST ͔ΒลΛҰຊऔΓআ͍ͨάϥϑ্Ͱ݅Λຬͨ͢. Λྻ͢ڍΔૢ࡞ɼv ͔Β෯༏ઌ୳ࡧͳͲΛߦ͏͜ͱ Ͱ࣮͖ͰݱΔɽ ଞͷૢ࡞ʹ͍ͭͯɼྔࢉܭʹطΛࣔͨ͠ɽૢ࡞ͷ࠷ ͕͔͔࣌ؒΔͷ SplitCluster ͷ࣮ߦͱ MergeClus√ ters ͷ࣮ߦͰ͋ΓɼͦΕͧΕঈ٫࣌ؒ ྔࢉܭO(|V| |V|) ࣌. ͖ΔͳΒɼঈ٫ O(|V|) ࣌ؒͰಈ࡞͢Δɽ. ؒͰ͋ΔɽैͬͯɼআΫΤϦͷॲཧʹ͔͔Δঈ٫࣌ؒܭ √ ࢉྔ O(|V| |V|) ࣌ؒͰ͋Δɽ. Proof. ୈ 3 ʙ 9 ߦͷ for จʹΑΓɼe es ͷશͯͷཁૉ. 6.1.2 ลͷՃ. ʹؔͯ͠ϧʔϓ͢Δɽ֤ e ʹ͍ͭͯɼ f (e) ͷʹΑͬͯ. ՃΫΤϦΛ add(u, v, x) Λॲཧ͢Δؔ AddEdge ͷ࣮. result1, result2 ͷ͍ͣΕ͔ͷඌʹ࿈݁͢ΔॲཧΛ͢Δɽ. ʹඞཁͱͳΔૢ࡞ͷɼআΫΤϦʹݱΕͳ͔ͬͨͷ. ྻඌͷ୯ҰཁૉͷՃঈ٫ O(1) ࣌ؒͰ͋Γɼ࿈݁. ҎԼͷૢ࡞Ͱ͋Δɽ. Λ |es| ճ࣮ߦ͢Δɽ. |es| = O(|V|) Ͱ͋ΔͨΊɼ SplitEdgeList O(|V|) ࣌ؒͰ ಈ࡞͢Δɽ. . √ SplitCluster (i, j) ঈ٫࣌ؒ ྔࢉܭO(|V| |V|) ࣌ؒͰ ಈ࡞͢Δɽ. ( 1 ) w((u, v)) ͷ͕ x ͱͳΔΑ͏ʹ w Λมߋ͢Δ ( 2 ) MST ্ͷ u-v ύε্Ͱ࠷ॏ͍Λ୳͢ w Λมߋ͢Δॲཧɼ֤ u, v ʹର͢Δ w((u, v)) ͷΛ 2 ࣍ݩྻͰอ͍࣋ͯ͠Ε O(1) ࣌ؒͰ࣮ߦͰ͖ΔɽMST ্ͷ u-v ύεΛٻΊΔॲཧɼ্Ͱࣔͨ͠Α͏ʹ O(|V|) ࣌. Proof. ॴଐΫϥελʹؔ͢Δ݅ؔɼ൪߸ʹର. ؒͰ࣮ߦͰ͖Δɽu-v ύεؚ͕Ήลͷຊ࠷େͰ |V| − 1. ͢ΔॴଐΫϥελͷใΛྻʹهԱ͓ͯ͘͜͠ͱͰఆ. Ͱ͋Γɼ͔ͦ͜Β࠷ॏ͍Λ୳͢ૢ࡞ઢʹࡧ୳ܗΑ. ࣌ؒͰಈ࡞͢ΔΑ͏࣮Ͱ͖Δɽैͬͯɼॲཧʹར༻͢Δ. Γ O(|V|) ࣌ؒͰ࣮ߦͰ͖Δɽैͬͯɼ্ʹ࡞ૢͨ͛ڍ͍. SplitEdgeList ঈ٫ O(|V|) ࣌ؒͰಈ࡞͢Δɽ. ͣΕ O(|V|) ࣌ؒͰ࣮ߦͰ͖Δɽ. ୈ 2, 3 ߦͰɼ SplitEdgeList ʹΑΓ inneri Λ 2 ճॲཧ. SplitCluster ͱ MergeClusters ͷ࣮ߦՃΫΤϦͷ. ͢Δɽ͜ΕΒͷॲཧɼঈ٫ O(|V|) ࣌ؒͰ࣮ߦͰ͖Δɽ. ॲཧʹ·ؚΕ͓ͯΓɼ͜ΕΒͷ࣮ߦʹ࠷͕͔͔࣌ؒΔɽ. ୈ 4 ʙ 6 ߦͷ for จʹ͓͍ͯɼk i, j Λআ͍ͨશͯͷ √ Ϋϥελʹؔͯ͠ϧʔϓ͠ɼͦͷରͷݸ O( |V|) Ͱ. ैͬͯɼՃΫΤϦʹ͔͔Δঈ٫࣌ؒྔࢉܭআΫΤϦ √ ͱಉ༷ʹ O(|V| |V|) ࣌ؒͰ͋Δɽ. ⓒ 2016 Information Processing Society of Japan. 7.
(10) 情報処理学会研究報告 IPSJ SIG Technical Report ද1. Vol.2016-AL-158 No.9 2016/6/25. Խͨ͠. طଘख๏ͼٴఏҊख๏ͷ࣮ߦ࣌ؒൺֱʢϥϯμϜέʔεʣ ख๏. ࣌ؒྔࢉܭ. ࣮ߦ࣌ؒʢ࣮ଌʣ [sec]. Prim ͷΞϧΰϦζϜ. O(|E| log |V|) = O(|V|2 log |V|). 32.71. ( 3 ) ࠷దͳωοτϫʔΫ͕άϥϑʹ͓͚Δ MST ʹରԠ͢. Kruskal ͷΞϧΰϦζϜ. O(|E| log |E|) = O(|V|2 log |V|). 787.31. Δ͜ͱΛ্ࣔͨ͠Ͱɼάϥϑมߋ࣌ͷ MST ͷมԽ͕. Enhanced Kruskal. O(|E|) = O(|V|2 ) √ O(|V| |V|) = O(|V|1.5 ). 60.41. ॴہతͰ͋Δ͜ͱʹண͠ɼάϥϑมߋΫΤϦΛߴ. ఏҊख๏. 6.57. 6.2 ఆྔతղੳ݁Ռͱߟ. ʹॲཧ͢Δख๏Λ։ൃͨ͠. ( 4 ) ఏҊख๏ͷཧղੳΛߦ͍ɼطଘख๏Ͱ͋Δ Prim ͷ ΞϧΰϦζϜ Kruskal ͷΞϧΰϦζϜΑΓۙతʹ. ఏҊख๏ͷධՁͷͨΊɼطଘख๏ͱఏҊख๏Λ C++ Ͱ࣮. ߴͰ͋Δ͜ͱΛࣔͨ͠. ͠ɼ࣮ߦ࣌ؒΛܭଌ͢Δ࣮ݧΛߦͬͨɽ࣮ݧ༰ɼ1024 ͷάϥϑʹର͠ϥϯμϜͳάϥϑมߋΛ 1024 ճߦ͏. ( 5 ) ఏҊख๏ͱطଘख๏Λ࣮͠ɼͰݧ࣮ػࢉܭͷ࣮ଌʹ ΑΓఏҊख๏͕طଘख๏ΑΓ 5 ʙ 120 ഒఔߴͰ͋. ॲཧΛ 20 ճ܁Γฦ͠ɼ࣮ߦ࣌ؒΛܭଌ͢ΔͷͰ͋Δɽ. Δ͜ͱΛࣔͨ͠. ࣮ݧ Windows 7 ʹΠϯετʔϧͨ͠ VMWare ্Ͱಈ ࡞͢Δ Ubuntu 15.04 ্Ͱ࣮ࢪͨ͠ɽ֤ϓϩάϥϜϓϩά ϥϛϯά࡞ิॿπʔϧ Rime [8] Λ༻͍ͯࣗಈ࣮ߦ ͠ɼ࣮ߦ࣌ؒΛܭଌͨ͠ɽ ࣮݁ݧՌΛද 1 ʹࣔ͢ɽදதʹൺֱͷͨΊʹྔࢉܭ ࣔͨ͠ɽ͔Γ͢͞ͷͨΊɼมͨ͠ܗͷซ͍ͯ͠ه Δɽطଘख๏ͷ࠷ߴʹಈ࡞ͨ͠ͷ Prim ͷΞϧΰ ϦζϜͰ͋Δ͕ɼఏҊख๏ Prim ͷΞϧΰϦζϜͷ 5 ഒߴʹಈ࡞ͨ͠ɽ. Prim ͷΞϧΰϦζϜͱ Kruskal ͷΞϧΰϦζϜͷྔࢉܭ. ैͬͯɼϞόΠϧʹثػΑΔࢄίϯϐϡʔςΟϯά੍ ͍͓ͯʹޚɼ௨৴ʹΑΓൃੜ͢ΔίετΛ࠷খԽ͢Δख๏ Λࣔ͢͜ͱ͕Ͱ͖ͨͱ͑ݴΔɽ͜ΕʹΑΓɼॲཧͷ࣌ؒ ॖলిྗԽ͕ظͰ͖Δɽ. 7.2 ల ຊڀݚͷలͱͯ͠ҎԼͷ͕͋Δɽ. ( 1 ) άϥϑͷʹܗநԽͯ͠ѻͬͨ͜ͱͰɼಉ༷ͷࣜܗԽ. ͕͍͠ʹؔΘΒ࣮ͣߦ࣌ؒʹେ͖ͳ͕ࠩ͋Δ͕ɼ͜. ͕Ͱ͖ΔͷԠ༻͕ظͰ͖Δ. Ε Prim ͷΞϧΰϦζϜʹ͓͍ͯ༏ઌॱҐ͖Ωϡʔʹ. ( 2 ) ฏ͍ͯͭʹྔࢉܭۉͷΈੳͨͨ͠ΊɼΫϥελϦϯ. push ͞Εͳ͍ล͕ଟ͍ͨΊͰ͋ΔɽҰํɼKruskal ͷΞϧ. άͷมԽΛੳ͠࠷ѱέʔεͰͷղੳΛߦ͍͍ͨ. ΰϦζϜશͯͷลʹ͍ͭͯૢ࡞͢Δɽ. ( 3 ) Ͱ্ػࢉܭͷ࣮͕ݧϥϯμϜέʔεͷΈͰ͋ͬͨͨ. ఏҊख๏ͱಉ༷ʹιʔτࡁΈลϦετΛѻ͏ Enhanced √ √ O(|V|2 ) Kruskal ͱൺֱ͢Δͱ O(|V| |V|) ΑΓ 1024 = 32 1.5 ) = O(. Ίɼੑೳ͕ѱԽ͢ΔέʔεΛൃ͠ݟࢼ͢Δ͜ͱͰΑ ΓৄࡉͳੳΛߦ͍͍ͨ. ഒͷߴԽ͕ظͰ͖Δ͕ɼ࣮ࡍ 10 ഒఔͱͳ͍ͬͯ Δɽ͔͠͠ɼΞϧΰϦζϜ࣮͕ΑΓෳࡶͰ͋ΔʹؔΘ. ࢀߟจݙ. Βͣఆഒͷ͕ࠩ 3 ഒఔʹऩ·͍ͬͯΔͱ͑ݴɼे. [1]. ʹޮతͰ͋Δɽ ཧղੳͰ্ػࢉܭͼٴͷ࣮ݧͷ݁ՌɼఏҊख๏྆؍. [2]. ʹ͓͍ͯطଘख๏ΑΓޮతͰ͋Δͱ͑ݴΔɽ͜Εʹ ΑΓɼϞόΠϧ্ثػͷࢄίϯϐϡʔςΟϯάʹ͓͍ͯɼ ҎԼͷΑ͏ͳޮՌ͕ظͰ͖Δɽ. [3]. ( 1 ) ௨৴Ͱͷిྗফඅ͕ݮগ͢Δ͜ͱʹΑΔՔಇ࣌ؒͷ Ԇ. [4]. ( 2 ) ੍ޚλεΫʹؔ͢Δσʔλసૹͷॴཁ࣌ؒݮগʹΑ Δॲཧ࣌ؒॖ [5]. 7. Ή͢ͼ 7.1 ݁. [6]. ຊͰڀݚҎԼͷ͜ͱΛߦͬͨɽ [7]. ( 1 ) पล͕ڥແઢ௨৴ʹ༩͑ΔӨͱڹࢄίϯϐϡʔ ςΟϯά੍ޚͷͨΊͷ௨৴ʹ͍ͭͯड़ɼ௨৴ίετ ࠷খԽͷҙٛΛࣔͨ͠. [8]. Shaw, J. A.: Radiometry and the Friis transmission equation, American Journal of Physics, Vol. 81, No. 1, pp. 33–37 (2013). ruuroo: ແઢ LAN ʹର͢ΔোͷӨ ڹ- ύιίϯτ ϥϒϧͱࣗݾղܾɼhttp://pctrouble.lessismore.cc/ network/wirelesslan_obstacle.html, (2016/01/19 Ӿ ཡ). Abbas, S., Mosbah, M. and Zemmari, A.: Distributed computation of a spanning tree in a dynamic graph by mobile agents, Engineering of Intelligent Systems, 2006 IEEE International Conference on, IEEE, pp. 1–6 (2006). Cormen, T. H.ɼLeiserson, C. E.ɼRivest, R. L.ɼStein, C.ɼઙ ɼؠੜɼകඌത࢘ɼࢁԼխ࢙ɼాҰɿΞϧ ΰϦζϜΠϯτϩμΫγϣϯ: ੈքඪ४ MIT ڭՊॻɼۙ Պֶࣾɼୈ 3 ൛ edition (2012). Prim, R. C.: Shortest connection networks and some generalizations, Bell system technical journal, Vol. 36, No. 6, pp. 1389–1401 (1957). Kruskal, J. B.: On the shortest spanning subtree of a graph and the traveling salesman problem, Proceedings of the American Mathematical society, Vol. 7, No. 1, pp. 48–50 (1956). ळ༿࠸ɿશ੍ɾπϦʔ্ͰͷΫΤϦॲཧٕ๏ - (iwi) ʨ ল͠·͢ - TopCoder ෦ɼhttp://topcoder.g.hatena. ne.jp/iwiwi/20111205/1323099376 (2016/01/14 Ӿཡ). Takahashi, S.: Rime – Rime 1.0 documentation, ”http:// nya3jp.github.io/rime/, (2016/01/14 Ӿཡ).. ( 2 ) ϞόΠϧؒثػͷແઢ௨৴ΛάϥϑมߋΫΤϦʹఆࣜ ⓒ 2016 Information Processing Society of Japan. 8.
(11)
関連したドキュメント
算処理の効率化のliM点において従来よりも優れたモデリング手法について提案した.lMil9f
Spira, “A distributed algorithm for minimum-weight spanning trees,” ACM Trans. Topkis, “Concurrent broadcast for information dissemination”,
Bae, “Blind grasp and manipulation of a rigid object by a pair of robot fingers with soft tips,” in Proceedings of the IEEE International Conference on Robotics and Automation
Jayamsakthi Shanmugam, Dr.M.Ponnavaikko “A Solution to Block Cross Site Scripting Vulnerabilities Based on Service Oriented Architecture”, in Proceedings of 6th IEEE
1.共同配送 5.館内配送の 一元化 11.その他. 20余の高層ビルへの貨物を当
本案における複数の放送対象地域における放送番組の
固体廃棄物の処理・処分方策とその安全性に関する技術的な見通し.. ©Nuclear Damage Compensation and Decommissioning Facilitation
の主として労働制的な分配の手段となった。それは資本における財産権を弱め,ほとん