what:
社会计算是一门现代计算技术与社会科学之间的交叉学科,主要研究面向社会活动,社会过程,社会结构,社会组织和社会功能的计算理论和方法。
研究计算及信息技术在社会中得到应用,从而影响传统的社会行为的这个过程。
基于社会科学知识,理论,方法;借助计算及信息技术来帮助人类认识和研究社会科学的各种问题。------------可以理解为在线社交及信息网络分析
why:
- 有趣(Fun)
- 用户多,流行(Popular)
- 有用(Practical)
How:
- 社交网络(Social Networking Services)
- 社交媒体(Sosial media)
- 合作社区(Collective intelligenee)
- 在线游戏(Online gaming)
- 在线交友(Online dating)
小结: - 社会计算在众多世界一流大学通识课占重要的地位。
- 内容丰富,涵盖面广,跨学科。
- 近年来的研究热点。
网络的数学模型
社交及信息网络
人与人,人与物之间的“链接”
图(Graph)网络的数学模型
节点:事物
边:链接,连接,关系,联系
图的基本概念
节点的邻居:与A相邻的节点
节点的度:节点邻居的个数
- 路径
- 最短路径
- 距离
节点A的聚集系数=与A相邻的任意两个朋友之间也是朋友的概率=与A相邻的朋友对的个数/总数
计算机程序 主要功能
- 存储数据
- 输入:用户名
- 输出:该用户的好友个数
单个变量声明:
- 不支持特殊字符
- 变量过多,过于松散
数据类型:字典
定义:字典是可变的一种容器,可以存储任何Python的数据类型和其他容器类型。容器中的每个元素为一对键(key)和值(Value)的组合
{‘key’:‘value’}
注意:字典是无序的,key对大小写敏感
添加元素
dict[new key]=value
更新元素
dict[key]=new value
删除元素
del dict[key]
理论+程序
- 看:计算机如何读取一个好友网络图的数据?
- 算:计算机如何计算每个节点的好友数?
import os,sys
import urllib.request
file=urllib.request.urloppen(.....)//1读取网络上的文件
degree={}
for line in file.read().splitlines()://2读出文件的没一行内容
line1=line.decode('utf-8')
f1=line1.split(' ')//3把当前行的内容按空格分成两部分
id1=f1[0]
id2=f1[1]//4分别取出两个用户的用户名
print(id1)
print(id2)//5输出两个用户的用户名
print("--------------------------------")
file.close()
一边读文件,一边往上加
file=urllib.fequest.urlopen()
degree={}
for line in file.read().splitlines():
line1=line.decod('utf-8')
f1=line1.split(' ')
id1=f1[0]
id2=f1[1]
if (id1 in degree):
degree[id1=degree[id1]+1
else:
file.close()
a=input()
print(degree[a])
研究举例
如何成为好友?
- 讲道理:社会学经典理论
- 摆事实:大数据验证
经典社会学理论:三元闭包原理
社会网络烟花的基本结构性原因
- Anatole Rapoport(1953)
如果两个不认识的人有了一个共同的朋友,则他们两个将来成为朋友的可能性会提高
- 机会Opportunity?
- 信任Trust?
- 动机Incentive?
三元闭包原理 实验验证
实验步骤:
- 找到一种合适的社会网络数据
- 依据数据验证
可以将上边的结论转换为:如果两个不认识的人的共同朋友越多,则他们在未来成为朋友的可能性越大。