2020 10 29 pairAll debugging - syntaxmonkey/Thesis GitHub Wiki
There is a defect with pairAllAND. Found one case that would cause a problem.
Pairs with the same distance
We currently sort the distances between the pairs. The distances are processed from shortest distance to longest distance. If there are two or more pairs with the same distance, pairAllAND will incorrectly create pairs.
Fix - iterate through multiple pairs with the same distance
The solution was to iterate through the pairs with the same distance.
Still having issues.
Here are the data sets: ******** ************* ******** mergeLines2 count: 0 Original s1: [array([ 34.42735782, -23.84486889]), array([ 34.42735782, -23.84486889]), array([ 33.38715398, -21.08312749]), array([ 33.38715398, -21.08312749]), array([ 31.73748741, -18.95614883]), array([ 31.73748741, -18.95614883]), array([ 31.98949792, -18.59441584]), array([ 31.98949792, -18.59441584]), array([ 30.7358979 , -17.64890611]), array([ 30.7358979 , -17.64890611]), array([ 30.52572569, -17.09996287]), array([ 30.52572569, -17.09996287]), array([ 28.83688755, -15.39379366]), array([ 28.83688755, -15.39379366]), array([22.3868842, -8.2579204]), array([22.3868842, -8.2579204]), array([ 27.53627147, -14.09935356]), array([ 34.2015865 , -26.34616958]), array([ 34.15756995, -28.94031064]), array([ 34.15756995, -28.94031064]), array([ 33.84402704, -32.06187529]), array([22.3868842, -8.2579204]), array([22.3868842, -8.2579204]), array([ 27.53627147, -14.09935356]), array([ 28.83688755, -15.39379366]), array([ 28.83688755, -15.39379366]), array([ 30.7358979 , -17.64890611]), array([ 30.52572569, -17.09996287]), array([ 31.73748741, -18.95614883]), array([ 31.98949792, -18.59441584]), array([ 30.7358979 , -17.64890611]), array([ 30.52572569, -17.09996287]), array([ 31.73748741, -18.95614883]), array([ 31.98949792, -18.59441584]), array([ 33.38715398, -21.08312749]), array([ 33.38715398, -21.08312749]), array([ 34.42735782, -23.84486889]), array([ 34.42735782, -23.84486889]), array([ 34.2015865 , -26.34616958]), array([ 34.15756995, -28.94031064]), array([ 34.15756995, -28.94031064]), array([ 33.84402704, -32.06187529])] Original s2: [array([ 34.8488894 , -22.10952985]), array([ 35.31896306, -26.56156114]), array([ 33.81667385, -18.91543332]), array([ 34.8488894 , -22.10952985]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 27.87317371, -13.95329808]), array([ 31.84576239, -17.33846168]), array([21.01736602, -6.8696011 ]), array([ 25.0039317 , -10.52399135]), array([ 27.87317371, -13.95329808]), array([ 35.31896306, -26.56156114]), array([ 35.31896306, -26.56156114]), array([ 35.07660043, -30.77741762]), array([ 35.07660043, -30.77741762]), array([21.01736602, -6.8696011 ]), array([ 25.0039317 , -10.52399135]), array([ 27.87317371, -13.95329808]), array([ 27.87317371, -13.95329808]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 34.8488894 , -22.10952985]), array([ 34.8488894 , -22.10952985]), array([ 35.31896306, -26.56156114]), array([ 35.31896306, -26.56156114]), array([ 35.31896306, -26.56156114]), array([ 35.07660043, -30.77741762]), array([ 35.07660043, -30.77741762])]
******** ************* ******** mergeLines2 count: 1 Original s1: [array([ 33.84402704, -32.06187529]), array([ 33.84402704, -32.06187529]), array([ 31.59985009, -33.10155124]), array([ 29.60252592, -35.8797598 ]), array([ 28.4663902 , -39.83309759]), array([ 28.4663902 , -39.83309759]), array([ 25.87591354, -42.78756968]), array([ 25.87591354, -42.78756968]), array([ 25.87591354, -42.78756968]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 23.82953334, -49.30070149]), array([ 23.82953334, -49.30070149]), array([ 23.82953334, -49.30070149]), array([ 21.46070678, -52.69734559]), array([ 21.46070678, -52.69734559]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 28.4663902 , -39.83309759]), array([ 33.84402704, -32.06187529]), array([ 31.59985009, -33.10155124]), array([ 29.60252592, -35.8797598 ]), array([ 33.84402704, -32.06187529]), array([ 28.4663902 , -39.83309759]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 23.82953334, -49.30070149]), array([ 24.31518087, -46.62127073]), array([ 23.82953334, -49.30070149]), array([ 23.82953334, -49.30070149]), array([ 21.46070678, -52.69734559]), array([ 21.46070678, -52.69734559]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073])] Original s2: [array([ 36.95139723, -33.08261928]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 29.0304015 , -39.44287986]), array([ 28.37474543, -41.84738736]), array([ 28.37474543, -41.84738736]), array([ 27.4368908 , -43.90859741]), array([ 26.58027849, -44.90837485]), array([ 26.20341675, -45.83430599]), array([ 27.4368908 , -43.90859741]), array([ 26.58027849, -44.90837485]), array([ 26.20341675, -45.83430599]), array([ 25.96106345, -46.73748341]), array([ 25.21802921, -48.40676153]), array([ 25.96106345, -46.73748341]), array([ 25.21802921, -48.40676153]), array([ 23.08363263, -50.97381066]), array([ 23.08363263, -50.97381066]), array([ 22.10888243, -55.09376137]), array([ 26.58027849, -44.90837485]), array([ 26.58027849, -44.90837485]), array([ 27.4368908 , -43.90859741]), array([ 27.4368908 , -43.90859741]), array([ 29.0304015 , -39.44287986]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 36.95139723, -33.08261928]), array([ 28.37474543, -41.84738736]), array([ 28.37474543, -41.84738736]), array([ 25.96106345, -46.73748341]), array([ 25.96106345, -46.73748341]), array([ 25.21802921, -48.40676153]), array([ 25.21802921, -48.40676153]), array([ 23.08363263, -50.97381066]), array([ 23.08363263, -50.97381066]), array([ 22.10888243, -55.09376137]), array([ 26.20341675, -45.83430599]), array([ 26.20341675, -45.83430599])]
******** ************* ******** mergeLines2 count: 2 Original s1: [array([ 18.51936813, -55.8467788 ]), array([ 13.28635235, -54.949561 ]), array([ 13.28635235, -54.949561 ]), array([ 1.30515602, -53.62480471]), array([ 1.30515602, -53.62480471]), array([ -0.85314076, -52.71337369]), array([ -0.85314076, -52.71337369]), array([ 1.30515602, -53.62480471]), array([ 1.30515602, -53.62480471]), array([ 13.28635235, -54.949561 ]), array([ 13.28635235, -54.949561 ]), array([ 18.51936813, -55.8467788 ])] Original s2: [array([ 16.7653786 , -56.43947507]), array([ 11.06364059, -55.16179609]), array([ 16.7653786 , -56.43947507]), array([ -0.65829134, -54.44064379]), array([ 4.56010267, -54.45610434]), array([ -0.65829134, -54.44064379]), array([ -0.65829134, -54.44064379]), array([ -0.65829134, -54.44064379]), array([ 4.56010267, -54.45610434]), array([ 11.06364059, -55.16179609]), array([ 16.7653786 , -56.43947507]), array([ 16.7653786 , -56.43947507])]
******** ************* ******** mergeLines2 count: 3 Original s1: [array([ 34.8488894 , -22.10952985]), array([ 35.31896306, -26.56156114]), array([ 33.81667385, -18.91543332]), array([ 34.8488894 , -22.10952985]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 27.87317371, -13.95329808]), array([ 31.84576239, -17.33846168]), array([21.01736602, -6.8696011 ]), array([ 25.0039317 , -10.52399135]), array([ 27.87317371, -13.95329808]), array([ 35.31896306, -26.56156114]), array([ 35.31896306, -26.56156114]), array([ 35.07660043, -30.77741762]), array([ 35.07660043, -30.77741762]), array([21.01736602, -6.8696011 ]), array([ 25.0039317 , -10.52399135]), array([ 27.87317371, -13.95329808]), array([ 27.87317371, -13.95329808]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 31.84576239, -17.33846168]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 33.81667385, -18.91543332]), array([ 34.8488894 , -22.10952985]), array([ 34.8488894 , -22.10952985]), array([ 35.31896306, -26.56156114]), array([ 35.31896306, -26.56156114]), array([ 35.31896306, -26.56156114]), array([ 35.07660043, -30.77741762]), array([ 35.07660043, -30.77741762])] Original s2: [array([ 34.42735782, -23.84486889]), array([ 34.42735782, -23.84486889]), array([ 33.38715398, -21.08312749]), array([ 33.38715398, -21.08312749]), array([ 31.73748741, -18.95614883]), array([ 31.73748741, -18.95614883]), array([ 31.98949792, -18.59441584]), array([ 31.98949792, -18.59441584]), array([ 30.7358979 , -17.64890611]), array([ 30.7358979 , -17.64890611]), array([ 30.52572569, -17.09996287]), array([ 30.52572569, -17.09996287]), array([ 28.83688755, -15.39379366]), array([ 28.83688755, -15.39379366]), array([22.3868842, -8.2579204]), array([22.3868842, -8.2579204]), array([ 27.53627147, -14.09935356]), array([ 34.2015865 , -26.34616958]), array([ 34.15756995, -28.94031064]), array([ 34.15756995, -28.94031064]), array([ 33.84402704, -32.06187529]), array([22.3868842, -8.2579204]), array([22.3868842, -8.2579204]), array([ 27.53627147, -14.09935356]), array([ 28.83688755, -15.39379366]), array([ 28.83688755, -15.39379366]), array([ 30.7358979 , -17.64890611]), array([ 30.52572569, -17.09996287]), array([ 31.73748741, -18.95614883]), array([ 31.98949792, -18.59441584]), array([ 30.7358979 , -17.64890611]), array([ 30.52572569, -17.09996287]), array([ 31.73748741, -18.95614883]), array([ 31.98949792, -18.59441584]), array([ 33.38715398, -21.08312749]), array([ 33.38715398, -21.08312749]), array([ 34.42735782, -23.84486889]), array([ 34.42735782, -23.84486889]), array([ 34.2015865 , -26.34616958]), array([ 34.15756995, -28.94031064]), array([ 34.15756995, -28.94031064]), array([ 33.84402704, -32.06187529])]
******** ************* ******** mergeLines2 count: 5 Original s1: [array([ 96.82251695, -16.82195936]), array([ 90.28467854, -16.45699242]), array([ 90.28467854, -16.45699242]), array([ 83.91344071, -17.99450117]), array([ 83.91344071, -17.99450117]), array([ 79.09392863, -16.71975662]), array([ 79.09392863, -16.71975662]), array([ 73.8329289, -15.379945 ]), array([ 73.8329289, -15.379945 ]), array([ 69.70383862, -15.23794323]), array([ 68.63150012, -16.87598634]), array([ 68.63150012, -16.87598634]), array([ 67.93626094, -18.82861032]), array([ 67.93626094, -18.82861032]), array([ 68.65560682, -19.8713418 ]), array([ 68.65560682, -19.8713418 ]), array([ 67.73759204, -21.09144084]), array([ 67.73759204, -21.09144084]), array([ 65.85464466, -23.6933914 ]), array([ 65.85464466, -23.6933914 ]), array([ 65.1438683 , -25.89617495]), array([ 65.1438683 , -25.89617495]), array([ 65.1438683 , -25.89617495]), array([ 63.86921023, -29.15003639]), array([ 63.86921023, -29.15003639]), array([ 63.86921023, -29.15003639]), array([ 63.86921023, -29.15003639]), array([ 63.86921023, -29.15003639]), array([ 63.86921023, -29.15003639]), array([ 63.86921023, -29.15003639]), array([ 65.1438683 , -25.89617495]), array([ 63.86921023, -29.15003639]), array([ 65.85464466, -23.6933914 ]), array([ 65.1438683 , -25.89617495]), array([ 63.86921023, -29.15003639]), array([ 67.93626094, -18.82861032]), array([ 68.65560682, -19.8713418 ]), array([ 67.73759204, -21.09144084]), array([ 65.85464466, -23.6933914 ]), array([ 68.63150012, -16.87598634]), array([ 67.93626094, -18.82861032]), array([ 68.65560682, -19.8713418 ]), array([ 67.73759204, -21.09144084]), array([ 69.70383862, -15.23794323]), array([ 73.8329289, -15.379945 ]), array([ 68.63150012, -16.87598634]), array([ 73.8329289, -15.379945 ]), array([ 79.09392863, -16.71975662]), array([ 79.09392863, -16.71975662]), array([ 83.91344071, -17.99450117]), array([ 83.91344071, -17.99450117]), array([ 90.28467854, -16.45699242]), array([ 96.82251695, -16.82195936]), array([ 90.28467854, -16.45699242]), array([ 65.1438683 , -25.89617495]), array([ 63.86921023, -29.15003639])] Original s2: [array([ 93.86321786, -19.82990084]), array([ 89.64664429, -18.3360094 ]), array([ 93.86321786, -19.82990084]), array([ 80.30417846, -17.16403258]), array([ 84.80128654, -18.36758329]), array([ 76.58932359, -17.23786999]), array([ 80.30417846, -17.16403258]), array([ 71.99375025, -15.59168688]), array([ 76.58932359, -17.23786999]), array([ 71.99375025, -15.59168688]), array([ 71.99375025, -15.59168688]), array([ 69.12855969, -19.06965069]), array([ 69.12855969, -19.06965069]), array([ 68.11416893, -21.89516511]), array([ 69.12855969, -19.06965069]), array([ 68.11416893, -21.89516511]), array([ 69.12855969, -19.06965069]), array([ 68.11416893, -21.89516511]), array([ 68.11416893, -21.89516511]), array([ 65.7025613 , -26.06292483]), array([ 65.7025613 , -26.06292483]), array([ 66.12655828, -27.91229624]), array([ 64.23856761, -28.83793961]), array([ 65.7025613 , -26.06292483]), array([ 66.12655828, -27.91229624]), array([ 64.23856761, -28.83793961]), array([ 63.28174567, -30.16335286]), array([ 64.12261204, -31.9801462 ]), array([ 63.28174567, -30.16335286]), array([ 64.12261204, -31.9801462 ]), array([ 66.12655828, -27.91229624]), array([ 66.12655828, -27.91229624]), array([ 65.7025613 , -26.06292483]), array([ 65.7025613 , -26.06292483]), array([ 65.7025613 , -26.06292483]), array([ 68.11416893, -21.89516511]), array([ 68.11416893, -21.89516511]), array([ 68.11416893, -21.89516511]), array([ 68.11416893, -21.89516511]), array([ 69.12855969, -19.06965069]), array([ 69.12855969, -19.06965069]), array([ 69.12855969, -19.06965069]), array([ 69.12855969, -19.06965069]), array([ 71.99375025, -15.59168688]), array([ 71.99375025, -15.59168688]), array([ 71.99375025, -15.59168688]), array([ 76.58932359, -17.23786999]), array([ 76.58932359, -17.23786999]), array([ 80.30417846, -17.16403258]), array([ 80.30417846, -17.16403258]), array([ 84.80128654, -18.36758329]), array([ 93.86321786, -19.82990084]), array([ 93.86321786, -19.82990084]), array([ 89.64664429, -18.3360094 ]), array([ 64.23856761, -28.83793961]), array([ 64.23856761, -28.83793961])]
******** ************* ******** mergeLines2 count: 7 Original s1: [array([ 36.95139723, -33.08261928]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 29.0304015 , -39.44287986]), array([ 28.37474543, -41.84738736]), array([ 28.37474543, -41.84738736]), array([ 27.4368908 , -43.90859741]), array([ 26.58027849, -44.90837485]), array([ 26.20341675, -45.83430599]), array([ 27.4368908 , -43.90859741]), array([ 26.58027849, -44.90837485]), array([ 26.20341675, -45.83430599]), array([ 25.96106345, -46.73748341]), array([ 25.21802921, -48.40676153]), array([ 25.96106345, -46.73748341]), array([ 25.21802921, -48.40676153]), array([ 23.08363263, -50.97381066]), array([ 23.08363263, -50.97381066]), array([ 22.10888243, -55.09376137]), array([ 26.58027849, -44.90837485]), array([ 26.58027849, -44.90837485]), array([ 27.4368908 , -43.90859741]), array([ 27.4368908 , -43.90859741]), array([ 29.0304015 , -39.44287986]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 32.05742723, -35.58048344]), array([ 36.95139723, -33.08261928]), array([ 28.37474543, -41.84738736]), array([ 28.37474543, -41.84738736]), array([ 25.96106345, -46.73748341]), array([ 25.96106345, -46.73748341]), array([ 25.21802921, -48.40676153]), array([ 25.21802921, -48.40676153]), array([ 23.08363263, -50.97381066]), array([ 23.08363263, -50.97381066]), array([ 22.10888243, -55.09376137]), array([ 26.20341675, -45.83430599]), array([ 26.20341675, -45.83430599])] Original s2: [array([ 33.84402704, -32.06187529]), array([ 33.84402704, -32.06187529]), array([ 31.59985009, -33.10155124]), array([ 29.60252592, -35.8797598 ]), array([ 28.4663902 , -39.83309759]), array([ 28.4663902 , -39.83309759]), array([ 25.87591354, -42.78756968]), array([ 25.87591354, -42.78756968]), array([ 25.87591354, -42.78756968]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 24.31518087, -46.62127073]), array([ 23.82953334, -49.30070149]), array([ 23.82953334, -49.30070149]), array([ 23.82953334, -49.30070149]), array([ 21.46070678, -52.69734559]), array([ 21.46070678, -52.69734559]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 28.4663902 , -39.83309759]), array([ 33.84402704, -32.06187529]), array([ 31.59985009, -33.10155124]), array([ 29.60252592, -35.8797598 ]), array([ 33.84402704, -32.06187529]), array([ 28.4663902 , -39.83309759]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073]), array([ 23.82953334, -49.30070149]), array([ 24.31518087, -46.62127073]), array([ 23.82953334, -49.30070149]), array([ 23.82953334, -49.30070149]), array([ 21.46070678, -52.69734559]), array([ 21.46070678, -52.69734559]), array([ 25.87591354, -42.78756968]), array([ 24.31518087, -46.62127073])]
******** ************* ******** mergeLines2 count: 9 Original s1: [array([ 59.04316101, -39.27458908]), array([ 60.15871438, -42.19683641]), array([ 60.15871438, -42.19683641]), array([ 61.69214618, -43.68143444]), array([ 62.63658307, -45.21128463]), array([ 63.34721743, -47.73501204]), array([ 62.63658307, -45.21128463]), array([ 63.34721743, -47.73501204]), array([ 65.28482847, -50.88135641]), array([ 67.83236378, -52.78526757]), array([ 70.299313 , -55.52349078]), array([ 73.68902007, -58.74707323]), array([ 59.04316101, -39.27458908]), array([ 73.68902007, -58.74707323]), array([ 70.299313 , -55.52349078]), array([ 65.28482847, -50.88135641]), array([ 63.34721743, -47.73501204]), array([ 63.34721743, -47.73501204]), array([ 61.69214618, -43.68143444]), array([ 59.04316101, -39.27458908]), array([ 59.04316101, -39.27458908]), array([ 60.15871438, -42.19683641]), array([ 60.15871438, -42.19683641]), array([ 62.63658307, -45.21128463]), array([ 62.63658307, -45.21128463]), array([ 67.83236378, -52.78526757])] Original s2: [array([ 60.30354426, -39.68678943]), array([ 60.30354426, -39.68678943]), array([ 63.05353087, -45.400601 ]), array([ 63.05353087, -45.400601 ]), array([ 63.05353087, -45.400601 ]), array([ 63.05353087, -45.400601 ]), array([ 65.97714516, -48.78149069]), array([ 65.97714516, -48.78149069]), array([ 65.97714516, -48.78149069]), array([ 69.89249325, -53.47121599]), array([ 69.89249325, -53.47121599]), array([ 74.67057742, -57.94228088]), array([ 61.32401603, -36.1987379 ]), array([ 74.67057742, -57.94228088]), array([ 69.89249325, -53.47121599]), array([ 65.97714516, -48.78149069]), array([ 63.05353087, -45.400601 ]), array([ 65.97714516, -48.78149069]), array([ 63.05353087, -45.400601 ]), array([ 61.32401603, -36.1987379 ]), array([ 60.30354426, -39.68678943]), array([ 60.30354426, -39.68678943]), array([ 63.05353087, -45.400601 ]), array([ 63.05353087, -45.400601 ]), array([ 65.97714516, -48.78149069]), array([ 69.89249325, -53.47121599])]
Case: Count 2
Using the data from Count 2 we can reproduce the error case.
Verified the data does have several pairs that have the same distance apart.
Fixed cross cluster problem
The pairing algorithm attempts to pair points from two different regions. For the current discussion we will call them first region and second region. The points that belong to each region will be referred to as first endpoint and second endpoint, respectively.
The valid pairing combinations are:
- One point from the first region and one point from the second region.
- One point from the first region and multiple points from the second region.
- Multiple points from the first region and one point from the second region.
The pairing problem originates from the pairing algorithm. The algorithm did check to see if a point belonged to a cluster, but did not check to see if the cluster contained a specific combination of points. The fix modifies the algorithm to check the state of the potential end points. The endpoints can have one of three states:
- Neither endpoint is paired.
- First endpoint is paired while second endpoint is not paired.
- First endpoint is not paired while second endpoint is paired.
When neither endpoint is paired, the two points can be paired without further checks.
In case #2, the first endpoint is paired while the second endpoint is not paired. In this case, the first endpoint already belongs to a cluster. We need to check the cluster and count the number of points from the first region and the number of points from the second region. If there is only one point from the first region, we will allow the pairing to occur. If there are already multiple points from the first region in the cluster, we will disallow the pairing.
In case #3, the first endpoint is not paired while the second endpoint is paired. In this case, the second endpoint already belongs to a cluster. We need to check the cluster and count the number of points from the first region and the number of points from the second region. If there is only one point from the second region, we will allow the pairing to occur. If there are already multiple points from the second region in the cluster, we will disallow the pairing.
Results from fix.
Notice that we no longer encounter cross cluster pairings.
Count 0
Count 1
Count 2
Count 3
Count 4
Count 5
Count 6
Count 7
Count 8
Count 9