<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"><channel>
<title>satunnaisten verkkojen klusteroituminen</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/</link>
<description>Recent changes in satunnaisten verkkojen klusteroituminen</description>
<item><title>satunnaisten verkkojen klusteroituminen</title>
<link>http://sange.fi/~atehwa/cgi-bin/piki.cgi/satunnaisten%20verkkojen%20klusteroituminen</link>
<guid>http://sange.fi/~atehwa/cgi-bin/piki.cgi/#1519658810</guid>
<description>&lt;p&gt;&lt;ins&gt;(nettipäiväkirja 26.02.2018) Luin populaaritiedeteoksesta 
''Linked'' (Barabási 2002), jonka tiedot sinänsä ovat vanhentuneita, 
että ''n'' solmun satunnaisesti muodostettuun verkkoon on yleensä 
muodostunut yksi iso yhdistetty klusteri, mikäli linkkejä on vähintään 
saman verran kuin solmuja. Olisi kiva verifioida tämä itse.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Tiettyä tulkinnanvaraisuutta on tietysti siinä, milloin meillä 
on vain "yksi klusteri". Satunnaisesti muodostetussa verkossa muutama 
solmu pystyy helposti välttelemään yhdistetyksi tulemista, ja olemme 
oikeastaan enemmän kiinnostuneita siitä, missä tilanteessa klustereita 
ei ole enää monta kuin missä tilanteessa jokainen solmu kuuluu 
klusteriin. Eli ehkäpä voisi laittaa ehdoksi sen, että suurin klusteri 
on kooltaan vaikkapa 9/10 koko verkon koosta, tjsp.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Mutta nykyiset ohjelmointikielet tekevät superhelpoksi kokeilla 
tällaista. Esimerkiksi clojuressa on mukavat joukot, joilla voi 
helposti pitää muistissa yhdistettyjä verkon komponentteja (verkon 
"ekvivalenssiluokkia" linkkien suhteen). Ohjelma näyttää tältä:&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;{{{ (use 'clojure.set)&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn nodes [n] (set (range n)))&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn node-map [nodes] (into {} (map #(vector % #{%}) 
nodes)))&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn connect-nodes [node-map x y] (let [eqclass (union (get 
node-map x) (get node-map y))] (into node-map (map #(vector % eqclass) 
eqclass))))&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn connect-random [node-map n] (connect-nodes node-map 
(rand-int n) (rand-int n)))&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn state-seq [n] (iterate #(connect-random % n) (node-map 
(nodes n))))&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn clustered? [node-map threshold] (&gt; (apply max (map count 
(vals node-map))) (* threshold (count node-map))))&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;(defn clustering-point [n threshold] (count (take-while #(not 
(clustered? % threshold)) (state-seq n)))) }}}&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Tulokset eivät kylläkään vastaa kunnolla kirjan väitettä.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;{{{ user=&gt; (load-file "connected.clj") #'user/clustering-point 
user=&gt; (clustering-point 100 0.9) 138 user=&gt; (clustering-point 100 0.9) 
130 user=&gt; (clustering-point 100 0.9) 151 user=&gt; (clustering-point 100 
0.9) 133 }}}&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Jos yhden suuren klusterin pitää kattaa vain puolet verkosta, 
tulos on ihan eri. Satunneisesti muodostuneissa verkoissa suuren 
klusterin muodostumisessa aika menee siis satunnaisten erakkosolmujen 
haalimiseen osaksi verkkoa, ei klustereiden yhdistämiseen:&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;{{{ user=&gt; (clustering-point 100 0.5) 66 user=&gt; 
(clustering-point 100 0.5) 74 user=&gt; (clustering-point 100 0.5) 72 
user=&gt; (clustering-point 100 0.5) 70 }}}&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Siinä missä tulokset riippuvat "yhdeksi yhtymisen" tulkinnasta, 
ne eivät riipu verkon koosta, mikä on yhtäpitävää kirjan väitteen 
kanssa:&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;{{{ user=&gt; (clustering-point 1000 0.9) 1302 user=&gt; 
(clustering-point 1000 0.9) 1306 user=&gt; (clustering-point 1000 0.9) 
1262 user=&gt; (clustering-point 1000 0.9) 1246 user=&gt; (clustering-point 
1000 0.5) 702 user=&gt; (clustering-point 1000 0.5) 693 user=&gt; 
(clustering-point 1000 0.5) 698 user=&gt; (clustering-point 1000 0.5) 680 
}}}&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;Joka tapauksessa kirjassa väitettiin, että on olemassa maaginen 
piste, jossa yhden klusterin muodostuminen tapahtuu. Se on, mutta 
riippuu siitä, kuinka suuren klusterin haluamme. Tämä lienee lähinnä 
satunnaisesti muodostettujen verkkojen ominaisuus? Satunnaisia verkkoja 
ei oikeastaan esiinny luonnossa, eivätkä nämä tulokset kertone paljon 
mitään verkoista, lähinnä satunnaisuuden luonteesta. Mutta jos 
mittakaavattomissa verkoissa on sama juttu, niin sitten pitää kyllä 
sanoa, että klusteroitumiselle _ei_ ole yhtä selkeää rajaa.&lt;/ins&gt; 

&lt;p&gt;&lt;ins&gt;* [merkintä: 2018-02] * [atehwa] * [kategoria: 
päiväkirjamerkintä] * [kategoria: sosiaalisuus] * [kategoria: 
ohjelmointi]&lt;/ins&gt;

</description>
<pubDate>Mon, 26 Feb 2018 15:26:50 +0000</pubDate>
</item>

</channel></rss>
