መዋሃድ ከመሰረታዊ የኮምፒውተር ሳይንስ ስልተ ቀመሮች አንዱ ነው፣ በ1945 በታላቁ የሂሳብ ሊቅ ጆን ቮን ኑማን የተቀረፀ። ኒዩማን በማንሃተን ፕሮጀክት ውስጥ እየተሳተፈ ሳለ እጅግ በጣም ብዙ መረጃዎችን በብቃት የማስኬድ አስፈላጊነት አጋጥሞት ነበር። የሰራው ዘዴ "ከፋፍለህ ግዛ" የሚለውን መርህ ተጠቅሞ ለስራ የሚፈልገውን ጊዜ በእጅጉ ቀንሷል።
የአልጎሪዝም መርህ እና አጠቃቀም
የማዋሃድ ዘዴው እንደ አደራደሮች፣ ዝርዝሮች፣ ዥረቶች ያሉ አካላት እንዲደርሱባቸው ያዘዙ መዋቅሮችን በመደርደር ላይ ነው።
በሂደቱ ወቅት፣የመጀመሪያው ዳታ እገዳ ወደ ትናንሽ ክፍሎች፣እስከ አንድ አካል ይከፈላል፣ይህም አስቀድሞ የተደረደረ ዝርዝር ነው። ከዚያ በትክክለኛው ቅደም ተከተል እንደገና ይሰበሰባል።
የተወሰነ ርዝመት ያለው ድርድር ለመደርደር ተመሳሳይ መጠን ያለው ተጨማሪ የማህደረ ትውስታ ቦታ ያስፈልገዋል፣የተደረደረው ድርድር በክፍሎች የሚሰበሰብበት ነው።
ዘዴው ማንኛውንም ተመጣጣኝ የውሂብ አይነት እንደ ቁጥሮች ወይም ሕብረቁምፊዎች ለማዘዝ መጠቀም ይቻላል።
አዋህድ ተደርድሯል።ሴራዎች
አልጎሪዝምን ለመረዳት ትንታኔውን ከመጨረሻው እንጀምር -የተደረደሩ ብሎኮችን ከማዋሃድ ዘዴ።
አደራደሩ እንዳይሰበር በማንኛዉም መንገድ የተደረደሩ ሁለት የቁጥሮች ድርድር እንዳለን እናስብ። ለቀላልነት ቁጥሮቹን በከፍታ ቅደም ተከተል እንደርድራቸዋለን።
የአንደኛ ደረጃ ምሳሌ፡ ሁለቱም ድርድሮች እያንዳንዳቸው አንድ አካል ያቀፈ ነው።
int arr1={31}; int arr2={18}፤
እነሱን ለማዋሃድ የመጀመሪያውን ድርድር ዜሮ ኤለመንት (ቁጥር መስጠት ከዜሮ እንደሚጀምር አይርሱ) እና የሁለተኛው ድርድር ዜሮ ኤለመንት መውሰድ ያስፈልግዎታል። እነዚህ በቅደም ተከተል, 31 እና 18 ናቸው. በመደርደር ሁኔታ መሰረት, ቁጥር 18 ያነሰ ስለሆነ መጀመሪያ መምጣት አለበት. ቁጥሮቹን በትክክል በቅደም ተከተል ያስቀምጡ፡
int ውጤት={18, 31}፤
እስኪ ይበልጥ የተወሳሰበ ምሳሌ እንይ፣እያንዳንዱ ድርድር ብዙ አካላትን ያቀፈበት፡
int arr1={2, 17, 19, 45}; int arr2={5, 6, 21, 30}፤
የማዋሃድ ስልተ ቀመር ትንንሽ አካላትን በቅደም ተከተል ማወዳደር እና በውጤቱ ድርድር በትክክለኛው ቅደም ተከተል ማስቀመጥን ያካትታል። የአሁኑን ኢንዴክሶች ለመከታተል፣ ሁለት ተለዋዋጮችን እናስተዋውቅ - index1 እና index2። መጀመሪያ ላይ ወደ ዜሮ እናስቀምጣቸዋለን፣ ድርድሮቹ ስለተደረደሩ እና ትንሹ ንጥረ ነገሮች መጀመሪያ ላይ ናቸው።
int index1=0; int index2=0;
ሙሉውን የማዋሃድ ሂደቱን ደረጃ በደረጃ እንፃፍ፡
- ኤለመንቱን ኢንዴክስ1 ካለው ድርድር 1 እና ኢንዴክስ 2 ካለው ድርድር 2 ይውሰዱ።
- አወዳድር፣ከነሱ ትንሹን ምረጥ እና አስገባየውጤት ድርድር።
- የአሁኑን የትንሹን ንጥረ ነገር መረጃ ጠቋሚ በ1 ጨምር።
- ከመጀመሪያው እርምጃ ይቀጥሉ።
በመጀመሪያው ምህዋር ላይ፣ ሁኔታው ይህን ይመስላል፡
index1=0; index2=0; arr1 [0]=2; arr2 [0]=5; arr1 [0] < arr2[0]; ኢንዴክስ1++; ውጤት [0]=arr1 [0]; // ውጤት=[2]
በሁለተኛው መታጠፊያ ላይ፡
index1=1; index2=0; arr1 [1]=17; arr2 [0]=5; arr1 [1] > arr2 [0]; ኢንዴክስ2++; ውጤት [1]=arr2 [0]; // ውጤት=[2, 5]
ሶስተኛ፡
index1=1; index2=1; arr1 [1]=17; arr2 [1]=6; arr1 [1] > arr2 [1]; ኢንዴክስ2++; ውጤት [2]=arr2 [1]; // ውጤት=[2, 5, 6]
እና የመሳሰሉት፣ ውጤቱ ሙሉ በሙሉ የተስተካከለ ድርድር እስኪሆን ድረስ፡ {2፣ 5፣ 6፣ 17፣ 21, 19, 30, 45}።
የተለያየ ርዝመት ያላቸው ድርድሮች ከተዋሃዱ የተወሰኑ ችግሮች ሊፈጠሩ ይችላሉ። አሁን ካሉት ኢንዴክሶች አንዱ የመጨረሻው አካል ላይ ቢደርስ እና በሁለተኛው ድርድር ላይ አሁንም አባላት ቢቀሩስ?
int arr1={1, 4}; int arr2={2, 5, 6, 7, 9}; // 1 እርምጃ index1=0, index2=0; 1 2 ውጤት={1, 2}; // 3 ደረጃ index1=1, index2=1; 4 < 5 ውጤት={1, 2, 4}; //4 step index1=2, index2=1 ??
የኢንዴክስ1 ተለዋዋጭ እሴቱ 2 ላይ ደርሷል፣ነገር ግን arr1 ድርድር ያ ኢንዴክስ ያለው አካል የለውም። ሁሉም ነገር እዚህ ቀላል ነው፡ የተቀሩትን የሁለተኛው ድርድር አካላት ወደ ውጤቱ ያስተላልፉ፣ ቅደም ተከተላቸውንም ይጠብቁ።
ውጤት={1, 2, 4, 5, 6, 7, 9};
ይህ ሁኔታ ፍላጎቱን ይጠቁመናል።የአሁኑን የቼክ ኢንዴክስ ከተጣመረው የድርድር ርዝመት ጋር ያዛምዳል።
የተለያዩ ርዝመቶች ለታዘዙ ቅደም ተከተሎች (A እና B) አዋህድ፡
- የሁለቱም ተከታታዮች ርዝመት ከ0 በላይ ከሆነ፣ A[0] እና B[0]ን ያወዳድሩ እና ትንሹን ወደ መያዣው ይውሰዱት።
- ከተከታታዮቹ የአንዱ ርዝመት 0 ከሆነ፣የቀሩትን የሁለተኛውን ተከታታይ ክፍሎች ይውሰዱ እና ቅደም ተከተላቸውን ሳይቀይሩ ወደ መያዣው መጨረሻ ይሂዱ።
የሁለተኛው ደረጃ ትግበራ
በጃቫ ውስጥ ሁለት የተደረደሩ ድርድሮችን የመቀላቀል ምሳሌ ከዚህ በታች ቀርቧል።
int a1=አዲስ ኢንት {21, 23, 24, 40, 75, 76, 78, 77, 900, 2100, 2200, 2300, 2400, 2500}; int a2=አዲስ ኢንት {10, 11, 41, 50, 65, 86, 98, 101, 190, 1100, 1200, 3000, 5000}; int a3=አዲስ int[a1.length + a2.ርዝመት]; int i=0፣ j=0; ለ (int k=0; k a1.length-1) { int a=a2 [j]; a3[k]=a; j++; } ሌላ ከሆነ (j > a2.length-1) { int a=a1; a3[k]=a; እኔ ++; } ሌላ ከሆነ (a1 < a2 [j]) { int a=a1; a3[k]=a; እኔ ++; } ሌላ {int b=a2[j]; a3[k]=b; j++; } }
እዚህ፡
- a1 እና a2 ለመዋሃድ የመጀመሪያዎቹ የተደረደሩ ድርድሮች ናቸው፤
- a3 - የመጨረሻ ድርድር፤
- i እና j ለድርድር a1 እና a2 የአሁን አካላት ኢንዴክሶች ናቸው።
የመጀመሪያው እና ሁለተኛው መረጃ ጠቋሚዎቹ ከድርድር መጠን በላይ እንደማይሄዱ ካረጋገጡ። ሦስተኛው እና አራተኛው ሁኔታ ብሎኮች፣ በቅደም ተከተል፣ ወደሚገኘው የትንሹ ንጥረ ነገር ድርድር ይንቀሳቀሳሉ።
መከፋፈል እና አሸንፍ
ስለዚህ፣ የተደረደሩትን ማዋሃድ ተምረናል።የእሴቶች ስብስቦች. የውህደት አይነት አልጎሪዝም ሁለተኛ ክፍል - ውህደቱ ራሱ - አስቀድሞ ተደርድሯል ማለት ይቻላል።
ነገር ግን ከመጀመሪያው ያልተደረደሩ የቁጥሮች ድርድር እንዴት ወደ ብዙ የተደረደሩ ሊዋሃዱ እንደሚችሉ አሁንም መረዳት አለቦት።
የአልጎሪዝምን የመጀመሪያ ደረጃ እናስብ እና ድርደራዎችን እንዴት እንደሚለያዩ እንማር።
ይህ አስቸጋሪ አይደለም - የመጀመሪያዎቹ የእሴቶች ዝርዝር በግማሽ ይከፈላል ፣ ከዚያ እያንዳንዱ ክፍል እንዲሁ በሁለት ይከፈላል እና በጣም ትናንሽ ብሎኮች እስኪገኙ ድረስ።
የእነዚህ አነስተኛ ንጥረ ነገሮች ርዝመት ከአንድ ጋር እኩል ሊሆን ይችላል ማለትም እነሱ ራሳቸው የተደረደሩ ድርድር ሊሆኑ ይችላሉ፣ነገር ግን ይህ አስፈላጊ ሁኔታ አይደለም። የማገጃው መጠን አስቀድሞ ተወስኗል፣ እና ማንኛውም ተስማሚ የመደርደር ስልተ ቀመር ከትናንሽ መጠኖች ድርድር ጋር በብቃት የሚሰራ (ለምሳሌ ፈጣን ደርድር ወይም የማስገባት አይነት) እሱን ለማዘዝ መጠቀም ይቻላል።
ይህ ይመስላል።
// ኦሪጅናል ድርድር {34, 95, 10, 2, 102, 70}; // መጀመሪያ ተከፍሎ {34፣ 95፣ 10} እና {2፣ 102፣ 70}; // ሰከንድ ተከፍሎ {34} እና {95፣ 10} እና {2} እና {102፣ 70}
ከ1-2 አባሎችን ያካተቱ ብሎኮች ለመደርደር በጣም ቀላል ናቸው።
ከዛ በኋላ፣ አስቀድመን የተማርነውን የአባላቱን ቅደም ተከተል በመጠበቅ የተደረደሩትን ትንንሽ ድርድሮችን በጥንድ ማጣመር ያስፈልግዎታል።
የመጀመሪያው ደረጃ ትግበራ
የአንድ ድርድር ተደጋጋሚ ክፍፍል ከዚህ በታች ይታያል።
void mergeSort(T a፣ረጅም ጅምር፣ ረጅም አጨራረስ) { ረጅም መለያየት; ከሆነ(< አጨራረስ ጀምር) {መከፋፈል=(መጀመሪያ + ጨርስ)/2; ውህደት(ሀ፣ ጅምር፣መከፋፈል) ውህደት(ሀ፣ የተከፈለ+1፣ አጨራረስ) ውህደት (ሀ ፣ ጅምር ፣ መከፋፈል ፣ ማጠናቀቅ); } }
በዚህ ኮድ ውስጥ ምን ይከሰታል፡
የማዋሃድ ተግባር የመጀመሪያውን አደራደር
a
እና የክልሉን ግራ እና ቀኝ ድንበሮች ለመደርደር (አመላካቾች ይጀምራሉ እና
ጨርስ) ያገኛል።.
የዚህ ክፍል ርዝመት ከአንድ በላይ ከሆነ (
መጀመሪያ < ጨርስ
) ከሆነ ወደ ሁለት ክፍሎች ይከፈላል (በመረጃ ጠቋሚ
የተከፈለ)፣ እና እያንዳንዳቸው በተከታታይ ይደረደራሉ።
በተደጋጋሚ ተግባር ጥሪ በግራ በኩል፣የሴራው መነሻ መረጃ ጠቋሚ እና ኢንዴክስ
የተከፈለ
አልፈዋል። ለትክክለኛው፣ በቅደም ተከተል፣ መጀመሪያው
(የተከፈለ + 1) ይሆናል፣ እና መጨረሻው የዋናው ክፍል የመጨረሻው መረጃ ጠቋሚ ይሆናል።
ተግባር
መዋሃድ
ሁለት የታዘዙ ቅደም ተከተሎችን ያገኛል (
a[ጀምር]…a[የተከፈለ]
እና
a[የተከፈለ +1]…a[ጨርስ]) እና በቅደም ተከተል ያዋህዳቸዋል።
የውህደት ተግባር መካኒኮች ከላይ ተብራርተዋል።
የአልጎሪዝም አጠቃላይ እቅድ
የመደርደር ድርድር ዘዴው ሁለት ትላልቅ ደረጃዎችን ያቀፈ ነው፡
- ያልተደረደረውን ኦሪጅናል ድርድር በትናንሽ ቁርጥራጮች ይከፋፍሉት።
- የመደርደር ደንቡን በመከተል በጥንድ ሰብስባቸው።
ትልቅ እና ውስብስብ ስራ በብዙ ቀላል ስራዎች ተከፋፍሎ በቅደም ተከተል ተፈትቶ ወደሚፈለገው ውጤት ይመራል።
ዘዴ ግምገማ
የመዋሃድ አይነት የጊዜ ውስብስብነት የሚወሰነው በተሰነጠቀው ዛፍ ቁመት ነው።አልጎሪዝም እና በድርድር (n) ጊዜ ሎጋሪዝም (ሎግ n) ውስጥ ካሉ ንጥረ ነገሮች ብዛት ጋር እኩል ነው። እንዲህ ያለው ግምት ሎጋሪዝም ይባላል።
ይህ ሁለቱም የስልቱ ጥቅም እና ጉዳት ነው። የሩጫ ጊዜው በጣም በከፋ ሁኔታ ውስጥ እንኳን አይለወጥም ፣ የመጀመሪያው ድርድር በተቃራኒው ቅደም ተከተል ሲደረደር። ነገር ግን፣ ሙሉ በሙሉ የተደረደሩ መረጃዎችን ሲያካሂዱ፣ አልጎሪዝም የጊዜ ትርፍ አያቀርብም።
እንዲሁም የውህደት መደርደር ዘዴን የማስታወሻ ወጪን ማስተዋሉ ጠቃሚ ነው። እነሱ ከመጀመሪያው ስብስብ መጠን ጋር እኩል ናቸው. በዚህ በተጨማሪ በተመደበው ቦታ ላይ ከቁራጮቹ የተደረደረ ድርድር ተሰብስቧል።
የአልጎሪዝም ትግበራ
የፓስካል ውህደት ዓይነት ከዚህ በታች ይታያል።
የሂደት ውህደት(ስም: string; var f: text); Var a1, a2, s, i, j, kol, tmp: ኢንቲጀር; f1፣ f2፡ ጽሑፍ; ለ፡ ቡሊያን። ጀማሪኮል፡=0; መድብ (ረ, ስም); ዳግም ማስጀመር (ረ); EOF (ረ) ባይሆንም ማንበብ ይጀምራል (f, a1); inc (col); መጨረሻ; ዝጋ (ረ); መድብ(f1፣ '{የ1ኛ ረዳት ፋይል ስም}'); መድብ(f2፣ '{የ2ኛ ረዳት ፋይል ስም}'); s:=1; (s<kol) ዳግም ማስጀመር ሲጀምር (f); እንደገና መፃፍ (f1); እንደገና መፃፍ (f2); ለ i:=1 ወደ kol div 2 ጀምር አንብብ(f, a1); ጻፍ (f1, a1, ''); መጨረሻ; (kol div 2) mod s0 ከሆነ tmp:=kol div 2; tmp mod s0 ሲጀምር አንብብ(f, a1); ጻፍ (f1, a1, ''); inc (tmp); መጨረሻ; መጨረሻ; EOF (ረ) ባይሆንም ማንበብ (f, a2) ይጀምራል; ጻፍ (f2, a2, ''); መጨረሻ; ዝጋ (ረ); ዝጋ (f1); ዝጋ (f2); እንደገና መፃፍ (ረ); ዳግም አስጀምር (f1); ዳግም አስጀምር (f2); አንብብ (f1, a1); አንብብ (f2, a2); (ኢኦኤፍ (f1) አይደለም) እና (EOF (f2) አይደለም) ሲጀምሩ i:=0; j፡=0; b:=እውነት; (ለ) እና (EOF (f1) አይደለም) እና (ኢኦኤፍ (f2) አይደለም) የሚጀምሩት (a1<a2) ከሆነ (a1<a2) ከዚያ ይጀምሩ።ጻፍ (f, a1, ''); አንብብ (f1, a1); inc (i); መጨረሻ ጀምር ጻፍ(f, a2,'')፤ አንብብ (f2, a2); inc (j); መጨረሻ; (i=s) ወይም (j=s) ከሆነ b:=false; መጨረሻ; b ካልሆነ ከዚያ ይጀምሩ እያለ (i<s) እና (ኢኦኤፍ (f1) አይደለም) ይጻፉ (f, a1, '') ይጀምራሉ; አንብብ (f1, a1); inc (i); መጨረሻ; (j<s) እና (EOF(f2) ሳይሆን) ጻፍ (f, a2, '') ሲጀምሩ; አንብብ (f2, a2); inc (j); መጨረሻ; መጨረሻ; መጨረሻ; EOF (f1) ባይሆንም tmp:=a1; አንብብ (f1, a1); EOF (f1) ካልሆነ ከዚያ ይጻፉ (f, tmp, '') ሌላ ይጻፉ (f, tmp); መጨረሻ; EOF (f2) ባይሆንም tmp:=a2; አንብብ (f2, a2); EOF (f2) ካልሆነ ከዚያ ይጻፉ (f, tmp, '') ሌላ ይጻፉ (f, tmp); መጨረሻ; ዝጋ (ረ); ዝጋ (f1); ዝጋ (f2); s:=s2; መጨረሻ; አጥፋ (f1); አጥፋ (f2); መጨረሻ፤
በእይታ የስልተ ቀመር አሰራር ይህን ይመስላል (ከላይ - ያልታዘዘ ቅደም ተከተል፣ ታች - የታዘዘ)።
የውጭ ውሂብ መደርደር
ብዙውን ጊዜ በኮምፒዩተር ውጫዊ ማህደረ ትውስታ ውስጥ የሚገኙ አንዳንድ መረጃዎችን መደርደር ያስፈልጋል። በአንዳንድ ሁኔታዎች, በጣም አስደናቂ መጠን ያላቸው እና ወደ እነርሱ ለመድረስ ለማመቻቸት በ RAM ውስጥ ሊቀመጡ አይችሉም. ለእንደዚህ አይነት ጉዳዮች ውጫዊ የመደርደር ዘዴዎች ጥቅም ላይ ይውላሉ።
የውጭ ሚዲያን የመድረስ አስፈላጊነት የማስኬጃ ጊዜን ውጤታማነት ይቀንሳል።
የሥራው ውስብስብነት ስልተ ቀመር በአንድ ጊዜ የውሂብ ዥረቱን አንድ አካል ብቻ መድረስ ይችላል። እናም በዚህ አጋጣሚ ከምርጥ ውጤቶች ውስጥ አንዱ በማዋሃድ የመደርደር ዘዴ ይታያል፣ ይህም የሁለት ፋይሎችን አካላት በቅደም ተከተል ከሌላው ጋር ማወዳደር ይችላል።
ውሂብ በማንበብ ከየውጭ ምንጫቸው፣ ማቀናበራቸው እና ወደ መጨረሻው ፋይል መፃፍ በታዘዙ ብሎኮች (ተከታታይ) ውስጥ ይከናወናሉ። በታዘዘው ተከታታይ መጠን በአሰራር ዘዴ መሰረት ሁለት አይነት መደርደር አለ፡ ቀላል እና ተፈጥሯዊ ውህደት።
ቀላል ውህደት
በቀላል ውህደት፣የተከታታዩ ርዝመት ተስተካክሏል።
ስለዚህ፣ በመጀመሪያው ያልተደረደረ ፋይል ውስጥ፣ ሁሉም ተከታታዮች አንድ አካል ያካትታሉ። ከመጀመሪያው ደረጃ በኋላ መጠኑ ወደ ሁለት ይጨምራል. ቀጣይ - 4፣ 8፣ 16 እና የመሳሰሉት።
እንዲህ ነው የሚሰራው፡
- የምንጩ ፋይል (ረ) በሁለት ረዳት ክፍሎች የተከፈለ ነው - f1, f2.
- እንደገና ወደ አንድ ፋይል (ረ) ተዋህደዋል፣ ግን በተመሳሳይ ጊዜ ሁሉም ንጥረ ነገሮች በጥንድ እና በጥንድ ይነጻጸራሉ። በዚህ ደረጃ ያለው ተከታታይ መጠን ሁለት ይሆናል።
- ደረጃ 1 ተደግሟል።
- ደረጃ 2 ተደግሟል፣ ነገር ግን አስቀድሞ የታዘዙት 2ዎች ተዋህደው የተደረደሩ 4s።
- ሙሉው ፋይል እስኪደረደር ድረስ ዑደቱ ይቀጥላል፣ በእያንዳንዱ ድግግሞሽ ላይ ተከታታዩን ይጨምራል።
በቀላል ውህደት የውጪ መደርደር መጠናቀቁን እንዴት አወቁ?
- አዲስ ተከታታይ ርዝመት (ከተዋሃደ በኋላ) ከጠቅላላው የንጥረ ነገሮች ብዛት ያላነሰ፤
- አንድ ክፍል ብቻ ቀርቷል፤
- ረዳት ፋይል f2 ባዶ ቀርቷል።
የቀላል ውህደት ጉዳቶቹ፡ የሩጫው ርዝማኔ በእያንዳንዱ የውህደት ማለፊያ ላይ ስለሚወሰን፣ ከፊል የታዘዘ ውሂብ ሙሉ በሙሉ የዘፈቀደ ውሂብ እስከሚሰራ ድረስ ጊዜ ይወስዳል።
የተፈጥሮ ውህደት
ይህ ዘዴ ርዝመቱን አይገድበውም።ተከታታይ፣ ግን የሚቻለውን ይመርጣል።
የመደርደር አልጎሪዝም፡
- የመጀመሪያውን ቅደም ተከተል ከፋይል በማንበብ ረ. የመጀመሪያው የተቀበለው አካል በፋይሉ f1 ላይ ተጽፏል።
- የሚቀጥለው ግቤት የመደርደር ሁኔታን የሚያሟላ ከሆነ፣ እዚያ ይጻፋል፣ ካልሆነ፣ ከዚያ ወደ ሁለተኛው ረዳት ፋይል f2።
- በዚህ መንገድ ሁሉም የምንጭ ፋይሉ መዝገቦች ይሰራጫሉ እና የታዘዘ ቅደም ተከተል በf1 ተፈጥሯል ይህም የተከታታዩን የአሁኑን መጠን ይወስናል።
- ፋይሎች f1 እና f2 ተዋህደዋል።
- ዑደቱ ይደግማል።
በተከታታዩ ያልተስተካከሉ መጠን የተነሳ፣የተከታታዩን መጨረሻ በልዩ ቁምፊ ምልክት ማድረግ ያስፈልጋል። ስለዚህ, ሲዋሃዱ, የንፅፅር ብዛት ይጨምራል. በተጨማሪም፣ የአንዱ ረዳት ፋይሎች መጠን ከዋናው መጠን ጋር ሊጠጋ ይችላል።
በአማካኝ የተፈጥሮ ውህደት ከቀላል ውጫዊ አይነት ጋር ከመዋሃድ የበለጠ ቀልጣፋ ነው።
የአልጎሪዝም ባህሪዎች
ሁለት ተመሳሳይ እሴቶችን ሲያወዳድሩ ዘዴው የመጀመሪያ ደረጃቸውን ይጠብቃል ማለትም የተረጋጋ ነው።
የመለያ ሂደቱ በተሳካ ሁኔታ ወደ ብዙ ክሮች ሊከፋፈል ይችላል።
ቪዲዮው የውህደት ስልተ-ቀመር አሰራርን በግልፅ ያሳያል።