程序連結與代碼在文末的閱讀原文可以訪問,手機可玩但是縮放比例會有點問題
害,事情是這樣的
小旭學長最近在家無聊,想著練習一下html,CSS,JavaScript,echarts的編程能力,順便學習一下各種奇奇怪怪的知識,就瞎寫代碼搞點騷東西。
echarts裡面有個graph的可視化,正好可以用它來分析網絡的結構。
首先科普一下,graph(圖)也就是複雜網絡,是由節點和邊構成。而graph的應用也很廣泛。比如,如果我們把每個人抽象成一個點,人與人之間互相認識抽象為邊,那麼我們就可以得到一個社交網絡,分析這個社交網絡的結構。具體的應用是,用微博的互相關注數據構建網絡,再看看發一條微博的時候,信息是怎麼傳播出去的。
如果我們在程序中隨機生成一個網絡,很簡單,首先生成點,然後點與點之間隨機生成邊,立即得到一個簡單的Graph,然後用echarts可視化出來:
可以看到網絡也是長得千奇百怪,有的像葫蘆,有的像大象,還有的像蜘蛛
可是如果,網絡裡面有一個節點的顏色不一樣:
如果,我是說如果,這個顏色不一樣的節點,還會把顏色傳染給跟他相鄰的節點
震驚!如果我們給他再加上功能,比如:
2020年的某一天
未知疾病突然出現
迅速在宅男之間傳播
這一傳說中的疾病被命名為:中二病
每個點表示一個宅男
點之間的連線代表宅男之間二次元的靈魂交流
你作為宅男之神,要把中二病的傳播控制住
你可以用滑鼠點擊一個節點,它就會中毒,然後繼續傳播。每次遊戲除了開局自帶病毒的節點,你還有兩次下毒機會如果一個節點中毒了,一定天數內它並不知道自己中毒,還是會繼續傳播,但是一旦潛伏期到了它就會送進醫院隔離治療,停止傳播怎麼玩:
前期瘋狂傳染,後期調整參數防控
好的,功能加上去了,大概是這樣
但是,雖然遊戲已經有點好玩了,還是可以再加點參數進去,讓中二病的傳播更有趣:
網絡結構:
之前的網絡是一個隨機分布的網絡,一切充滿了隨機。但是,現實世界中的人類是充滿規律的,人與人的社交網絡應該是一個多社區的邊緣-核心結構。也就是,多個組團,每個組團裡面有核心點,邊緣點,每個組團之間又有共同的好友將團聯繫起來。就像這樣
小旭學長自製的遊戲大功告成!遊戲連結與代碼在文末的閱讀原文可以訪問
玩著自己製作的遊戲簡直是掩耳盜鈴,樂不思蜀啊!大家快來看看,通過玩自己的遊戲學會了些什麼知識吧
孤獨的宅男很難傳播病毒,也很難感染病毒:
如果病毒開局選擇在一個社區的邊緣點(孤獨的宅男),宅男根本就很少跟別人交流,病毒就很容易gg,過兩天宅男自己就把自己的中二病治好了
另外,即便是傳染性很強的情況下,孤獨的宅男們也很難感染到病毒
最優的下毒對象應該是?
我覺得,最優的下毒對象有兩種選擇,一種是某個社區裡的核心點,這樣病毒會在這個社區中快速傳播,再傳播給下一個社區。
第二種選擇是,社區與社區之間聯繫的關鍵節點,也就是,這個節點同時屬於兩個社區,它能夠將病毒傳播給兩個社區的節點,但這種節點一般為社區的邊緣點(如果它是社區的核心點,那麼兩個社區其實也就更加接近一個社區的概念了)
多社區結構之間傳播的傳播速度
多社區結構之間傳播的傳播速度往往有多個高峰,一個社區內傳播,高峰出現,逐漸傳播到邊緣點,這個社區的傳播高峰也過去了;然後再由邊緣點傳播到下一個社區,再出現高峰,形成多個傳播高峰
如何控制傳播?
減少人與人的接觸(圖的邊密度減少)
做防護措施降低傳染性(有交流就傳染的概率降低)
早發現早隔離避免潛伏期內傳播(潛伏期天數減少)
實現群體免疫:
在傳播到中後期時
大部分節點都治癒(有抗體)或者死亡
此時再下毒,雖然傳染性強但也傳播不開了
但是代價相當高,需要傳染遍大部分的節點