Files
2026-05-22 11:14:29 +02:00

54 lines
1.3 KiB
Plaintext

<snippet>
<subclass>afryca.ase.Snippet</subclass>
<file></file>
<category>Library</category>
<name>distance</name>
<description></description>
<code>
var distance = (typeof exports === "undefined")?(function distance() {}):(exports);
if(typeof global !== "undefined") { global.distance = distance; }
distance.kemeny = function kemeny(r1, r2) {
var result;
if ((r1 != null) && (r2 != null)) {
if (r1.length == r2.length) {
result = 0;
var v1;
var v2;
var n = r1.length;
for (var l = 0; l < (n - 1); l++) {
for (var k = l + 1; k < n; k++) {
v1 = r1[l] - r1[k]; // v1{(0,equals),(<0,o(l)<o(k)),(>0,o(l)>o(k)}
v2 = r2[l] - r2[k]; // v2{(0,equals),(<0,o(l)<o(k)),(>0,o(l)>o(k)}
if ((v1 < 0) && (v2 > 0)) {
result += 1;
} else if ((v1 > 0) && (v2 < 0)) {
result += 1;
} else if ((v1 == 0) && (v2 != 0)) {
result += 0.5;
} else if ((v1 != 0) && (v2 == 0)) {
result += 0.5;
}
}
}
}
}
return result;
}
distance.normalizeKemeny = function normalizeKemeny(kemeny, numberOfElements) {
var result;
if (numberOfElements > 0) {
result = (2 * kemeny) / (numberOfElements * (numberOfElements - 1));
}
return result;
}
distance.normalizedKemeny = function normalizedKemeny(r1, r2) {
return distance.normalizeKemeny(distance.kemeny(r1, r2), r1.length);
}
distance
</code>
</snippet>