From 8fe117a027e0eaf3b958302a6a4bd26db65eb72e Mon Sep 17 00:00:00 2001 From: biglyderv Date: Tue, 28 Jan 2025 18:07:44 -0500 Subject: [PATCH] matrix mul --- docs/stats.php | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/docs/stats.php b/docs/stats.php index 1b9eee8..709a1b6 100755 --- a/docs/stats.php +++ b/docs/stats.php @@ -15,6 +15,7 @@ $pr = array(); $fcount = array(); $frs = array(); + $matrixe = array(); foreach ($result as $usern) { $fn = $usern['username']; @@ -30,22 +31,40 @@ $stmt->execute([$fn]); $frs[$fn] = $stmt->fetchAll(PDO::FETCH_DEFAULT); + + $matrixe[$fn] = array(); + $matrixe[$fn][$fn] = 1; } - for ($i = 0; $i < 20; $i++) { - foreach ($result as $usern) { - $theuser = $usern['username']; - - $followers = $frs[$theuser]; - - foreach ($followers as $follown) { - $fn = $follown['target']; + foreach ($result as $usern) { + $theuser = $usern['username']; + + $followers = $frs[$theuser]; + foreach ($followers as $follown) { + $fn = $follown['target']; - if ($usern['username'] == $fn) continue; + if ($usern['username'] == $fn) continue; + $dst = $fcount[$fn]; - $dst = $fcount[$fn]; + $matrixe[$usern['username']][$fn] = 1 + 1 / ($dst + 10) / 10; - $pr[$usern['username']] += $pr[$fn] / ($dst + 10) / 10; + ///$pr[$usern['username']] += $pr[$fn] / ($dst + 10) / 10; + } + } + + + for ($i = 0; $i < 20; $i++) { + $prold = $pr; + $matrixf = $matrixe; + + foreach ($result as $usera) { + $pr[$usera['username']] = 0; + foreach ($result as $userb) { + $matrixe[$usera['username']][$userb['username']] = 0; + foreach ($result as $userc) { + $matrixe[$usera['username']][$userb['username']] += $matrixf[$usera['username']][$userc['username']] * $matrixf[$userc['username']][$userb['username']]; + } + $pr[$usera['username']] += $matrixe[$usera['username']][$userb['username']]; } } @@ -54,7 +73,7 @@ $new_sum = array_sum($pr); foreach ($result as $usern) { $h = $pr[$usern['username']]; - $pr[$usern['username']] = (pow($h / $new_sum,1.32) * 100) * $dist + ($h * (1 - $dist)); + $pr[$usern['username']] = (pow($h / $new_sum,1 /* 1.32 */) * 100) * $dist + ($h * (1 - $dist)); } }