异度部落格

学习是一种生活态度。

0%

Ubuntu: sudo apt-get install ttf-arphic-uming

Fedora:sudo yum install cjkuni-uming-fonts

然后打开http://web.sanguosha.com/  测试,如果不行请重启电脑。

PS:本人测试后发现安装字体只能解决 Firefox 下面的乱码,但无法解决 Chrome 浏览器下面的问题。

参考资料: http://hi.baidu.com/gerald07/item/fb2234cfbfef9f21e80f2e77 http://hi.baidu.com/siweng23/blog/item/aa9dfcfbd4f4564c242df2ec.html http://blog.csdn.net/devplus/article/details/6347492

协同过滤技术可以分为三类:基于用户(User-based)的协同过滤;基于项目(Item-based)的协同过滤;基于模型(Model-based)的协同过滤。 

基于用户(User-based)的协同过滤

用相似统计的方法得到具有相似爱好或者兴趣的相邻用户,所以称之为以用户为基础(User-based)的协同过滤或基于邻居的协同过滤(Neighbor-based Collaborative Filtering)。方法步骤:

1.收集用户资讯

收集可以代表用户兴趣的资讯。一般的网站系统使用评分的方式或是给予评价,这种方式被称为「主动评分」。另外一种是「被动评分」,是根据用户的行为模式由系统代替用户完成评价,不需要用户直接打分或输入评价资料。电子商务网站在被动评分的资料获取上有其优势,用户购买的商品记录是相当有用的资料。

2.最近邻搜索(Nearest neighbor search, NNS)

以用户为基础(User-based)的协同过滤的出发点是与用户兴趣爱好相同的另一组用户,就是计算两个用户的相似度。例如:寻找n个和A有相似兴趣用户,把他们对M的评分作为A对M的评分预测。一般会根据资料的不同选择不同的演算法,目前较多使用的相似度演算法有Person Correlation Coefficient、Cosine-based Similarity、Adjusted Cosine Similarity。

3.产生推荐结果

有了最近邻集合,就可以对目标用户的兴趣进行预测,产生推荐结果。依据推荐目的的不同进行不同形式的推荐,较常见的推荐结果有Top-N推荐和关联推荐。 Top-N推荐是针对个体用户产生,对每个人产生不一样的结果,例如:透过对A用户的最近邻用户进行统计,选择出现频率高且在A用户的评分项目中不存在的,作为推荐结果。关联推荐是对最近邻用户的记录进行关联规则(association rules)挖掘。

基于项目(Item-based)的协同过滤

以项目为基础的协同过滤方法有一个基本的假设:“能够引起用户兴趣的项目,必定与其之前评分高的项目相似”,透过计算项目之间的相似性来代替用户之间的相似性。方法步骤:

1.收集用户资讯

同以用户为基础(User-based)的协同过滤。

2.针对项目的最近邻搜索

先计算己评价项目和待预测项目的相似度,并以相似度作为权重,加权各已评价项目的分数,得到待预测项目的预测值。例如:要对项目A和项目B进行相似性计算,要先找出同时对A和B打过分的组合,对这些组合进行相似度计算,常用的演算法同以用户为基础(User-based )的协同过滤。

3.产生推荐结果

以项目为基础的协同过滤不用考虑用户间的差别,所以精度比较差。但是却不需要用户的历史资料,或是进行用户识别。对于项目来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而降低了线上计算量,提高推荐效率,尤其是在用户多于项目的情形下尤为显著。

基于模型(Model-based)的协同过滤

以用户为基础(User-based)的协同过滤和以项目为基础(Item-based)的协同过滤统称为以记忆为基础(Memory based)的协同过滤技术,他们共有的缺点是资料稀疏,难以处理大资料量影响即时结果,因此发展出以模型为基础的协同过滤技术。以模型为基础的协同过滤(Model-based Collaborative Filtering)是先用历史资料得到一个模型,再用此模型进行预测。以模型为基础的协同过滤广泛使用的技术包括Latent Semantic Indexing、 Bayesian Networks…等,根据对一个样本的分析得到模型。

参考资料:http://gengrenjie.com/2009/04/12/%E5%8D%8F%E5%90%8C%E8%BF%87%E6%BB%A4%E6%89%AB%E7%9B%B2%E7%8F%AD%EF%BC%884%EF%BC%89/

本文构建了一个简单的推荐系统,使用的数据是真实的数据,叫作MovieLens,来自University of Minnesota‘s GroupLens项目组。代码以Python作为实现语言,使用版本为Python2.7。

loadMovieData:用于数据的读取。userData指的是以userId为键构建的电影评分列表。movieData值的是以movieId为键构建的电影评分列表。

euclidean:用于计算Eucidean距离系数

pearson:用于计算Pearson相关系数

getSimilarItems:计算出movieData中每一项相似度最大的n项

getRecommendationsItems:对于某个user取得推荐结果

代码如下:

'''
Created on Jun 30, 2012

@Author: killua
@E-mail: killua_hzl@163.com
@Homepage: http://www.yidooo.net

Data set download from : http://www.grouplens.org/system/files/ml-100k.zip

MovieLens data sets were collected by the GroupLens Research Project
at the University of Minnesota.The data was collected through the MovieLens web site
(movielens.umn.edu) during the seven-month period from September 19th,
1997 through April 22nd, 1998.

This data set consists of:
* 100,000 ratings (1-5) from 943 users on 1682 movies.
* Each user has rated at least 20 movies.
* Simple demographic info for the users

u.data -- The full u data set, 100000 ratings by 943 users on 1682 items.
Each user has rated at least 20 movies. Users and items are
numbered consecutively from 1. The data is randomly
ordered. This is a tab separated list of
user id | item id | rating | timestamp.
The time stamps are unix seconds since 1/1/1970 UTC
u.item -- Information about the items (movies); this is a tab separated
list of
movie id | movie title | release date | video release date |
IMDb URL | unknown | Action | Adventure | Animation |
Children's | Comedy | Crime | Documentary | Drama | Fantasy |
Film-Noir | Horror | Musical | Mystery | Romance | Sci-Fi |
Thriller | War | Western |
The last 19 fields are the genres, a 1 indicates the movie
is of that genre, a 0 indicates it is not; movies can be in
several genres at once.
The movie ids are the ones used in the u.data data set.
'''

from math import sqrt

def loadMovieData(path = "./data/"):
"""
Load movie data from u.data and u.item
@param path: Data set path
"""
#Get movie's title
movies = {}
for line in open(path + '/u.item'):
(movieId, movieTitle) = line.split('|')[0:2]
movies[movieId] = movieTitle

#Load Data
movieData = {}
userData = {}
for line in open(path + '/u.data'):
(userId, itemId, rating, timestamp)=line.split('\t')
movieData.setdefault(movies[itemId], {})
movieData[movies[itemId]][userId] = float(rating)
userData.setdefault(userId, {})
userData[userId][movies[movieId]] = float(rating)

return (movieData, userData)

def euclidean(data, p1, p2):
"Calculate Euclidean distance"
distance = sum([pow(data[p1][item]-data[p2][item],2)
for item in data[p1] if item in data[p2]])

return 1.0 / (1 + distance)

def pearson(data, p1, p2):
"Calculate Pearson correlation coefficient"
corrItems = [item for item in data[p1] if item in data[p2]]

n = len(corrItems)
if n == 0:
return 0;

sumX = sum([data[p1][item] for item in corrItems])
sumY = sum([data[p2][item] for item in corrItems])
sumXY = sum([data[p1][item] * data[p2][item] for item in corrItems])
sumXsq = sum([pow(data[p1][item], 2) for item in corrItems])
sumYsq = sum([pow(data[p2][item],2) for item in corrItems])

if sqrt((sumXsq - pow(sumX, 2) / n) * (sumYsq - pow(sumY, 2) / n)) != 0:
pearson = (sumXY - sumX * sumY / n) / sqrt((sumXsq - pow(sumX, 2) / n) * (sumYsq - pow(sumY, 2) / n))
else:
return 0

return pearson

def getSimilarItems(movieData, n = 20, similarity=pearson):
"""
Create a dictionary of items showing which other items they are most similar to.
"""

results = {}
for movie in movieData:
#Get n items which most similar to movie
matches = [(similarity(movieData, movie, otherMovie),otherMovie)
for otherMovie in movieData if movie != otherMovie]
matches.sort()
matches.reverse()
results[movie] = matches[0:n]

return results

def getRecommendationsItems(userData, user, similarItems, n = 10):
"""
Get recommendations items for user
"""
userRatings = userData[user]
itemScores = {}
totalSim = {}

# Loop over items rated by this user
for (item, rating) in userRatings.items():
# Loop over items similar to this one
for (simValue, simItem) in similarItems[item]:
# Ignore if this user has already rated this item
if simItem in userRatings:
continue
# Weighted sum of rating times similarity
itemScores.setdefault(simItem, 0)
itemScores[simItem] += simValue * rating
# Sum of all the similarities
totalSim.setdefault(simItem, 0)
totalSim[simItem] += simValue

# Divide each total score by total weighting to get an average
rankings = [(score / totalSim[item], item) for (item, score) in itemScores.items() if totalSim[item] != 0]
rankings.sort()
rankings.reverse()

return rankings[0:n]

if __name__ == "__main__":

print 'Loading Data...'
movieData, userData = loadMovieData("./movie/")
print 'Get similarItems...'
similarItems = getSimilarItems(movieData, 50, euclidean)
print 'Calculate rankings...'
rankings = getRecommendationsItems(userData, "87", similarItems)

print rankings

Euclidean 距离

定义:欧几里得空间中点 x = (x1,...,xn) 和 y = (y1,...,yn) 之间的距离为

image

两个变量之间的相关系数越高,从一个变量去预测另一个变量的精确度就越高,这是因为相关系数越高,就意味着这两个变量的共变部分越多,所以从其中一个变量的变化就可越多地获知另一个变量的变化。如果两个变量之间的相关系数为 1 或-1,那么你完全可由变量 X 去获知变量 Y 的值。

· 当相关系数为 0 时,X 和 Y 两变量无关系。

· 当 X 的值增大,Y 也增大,正相关关系,相关系数在 0.00 与 1.00 之间

· 当 X 的值减小,Y 也减小,正相关关系,相关系数在 0.00 与 1.00 之间

· 当 X 的值增大,Y 减小,负相关关系,相关系数在-1.00 与 0.00 之间

当 X 的值减小,Y 增大,负相关关系,相关系数在-1.00 与 0.00 之间

相关系数的绝对值越大,相关性越强,相关系数越接近于 1 和-1,相关度越强,相关系数越接近于 0,相关度越弱。

image

实现代码:

from math import sqrt

# A dictionary of movie critics and their ratings of a small
# set of movies
movies = {'Lisa Rose': {'Lady in the Water': 2.5,
'Snakes on a Plane': 3.5,
'Just My Luck': 3.0,
'Superman Returns': 3.5,
'You, Me and Dupree': 2.5,
'The Night Listener': 3.0},
'Gene Seymour': {'Lady in the Water': 3.0,
'Snakes on a Plane': 3.5,
'Just My Luck': 1.5,
'Superman Returns': 5.0,
'The Night Listener': 3.0,
'You, Me and Dupree': 3.5},
'Michael Phillips': {'Lady in the Water': 2.5,
'Snakes on a Plane': 3.0,
'Superman Returns': 3.5,
'The Night Listener': 4.0},
'Claudia Puig': {'Snakes on a Plane': 3.5,
'Just My Luck': 3.0,
'The Night Listener': 4.5,
'Superman Returns': 4.0,
'You, Me and Dupree': 2.5},
'Mick LaSalle': {'Lady in the Water': 3.0,
'Snakes on a Plane': 4.0,
'Just My Luck': 2.0,
'Superman Returns': 3.0,
'The Night Listener': 3.0,
'You, Me and Dupree': 2.0},
'Jack Matthews': {'Lady in the Water': 3.0,
'Snakes on a Plane': 4.0,
'The Night Listener': 3.0,
'Superman Returns': 5.0,
'You, Me and Dupree': 3.5},
'Toby': {'Snakes on a Plane':4.5,
'You, Me and Dupree':1.0,
'Superman Returns':4.0}}

def euclidean(data, p1, p2):
"Calculate Euclidean distance"
distance = sum([pow(data[p1][item]-data[p2][item],2)
for item in data[p1] if item in data[p2]])

return distance

def pearson(data, p1, p2):
"Calculate Pearson correlation coefficient"
corrItems = [item for item in data[p1] if item in data[p2]]

n = len(corrItems)
if n == 0:
return 0;

sumX = sum([data[p1][item] for item in corrItems])
sumY = sum([data[p2][item] for item in corrItems])
sumXY = sum([data[p1][item] * data[p2][item] for item in corrItems])
sumXsq = sum([pow(data[p1][item], 2) for item in corrItems])
sumYsq = sum([pow(data[p2][item],2) for item in corrItems])

pearson = (sumXY - sumX * sumY / n) / sqrt((sumXsq - pow(sumX, 2) / n) * (sumYsq - pow(sumY, 2) / n))
return pearson

【试题描述】 你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费? 分为1、2、4 三段。 Day1:给1

Day2:给2,还1

Day3:给1

Day4:给4,还1、2

Day5:给1,还2

Day6:给2,还1

Day7:给1

【试题描述】请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。

将蛋糕均分层8份,取七份给其中七个人,最后一份放入盒中给第八个。

【试题描述】小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?

A:小明  1s

B:小明的弟弟  3s

C:小明的爸爸  6s

D:小明的妈妈  8s

E:小明的爷爷  12s 步骤 用时 位置状况 1 小明和小明的弟弟先过去 3s AB—CDE 2 小明的弟弟回来 3s A—BCDE 3 小明的妈妈和爷爷过去 12s ADE—BC 4 小明回来 1s DE—ABC 5 小明和他的爸爸过去 6s ACDE—B 6 小明回来 1s CDE—AB 7 小明和他的弟弟过去 3s ABCDE— 总用时:29s

【试题描述】一群人舞会,上都戴着一帽子。帽子只有黑白两,黑的至少有一个人都能看到其他人帽子的色,却看不到自己的。主持人先大家看看上戴的是什帽子,然后灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次灯,没有声音。于是再灯,大家再看一遍,仍然雀无声。一直到第三次灯,才有劈劈啪啪打耳光的声音响起。有多少人戴着黑帽子?

本题关键就是至少有一顶黑帽子。假如只有一个人戴黑帽子,那他看到所有人都戴白帽,在第一次关灯时就 应自打耳光,所以应该不止一个人戴黑帽子;如果有两顶黑帽子,第一次两人都只 看到对方头上的黑帽子,不敢确定自己的颜色,但到第二次关灯,这两人应该明白 ,如果自己戴着白帽,那对方早在上一次就应打耳光了,因此自己戴的也是黑帽子 ,于是也会有耳光声响起;可事实是第三次才响起了耳光声,说明全场不止两顶黑 帽,依此类推,应该是关了几次灯,有几顶黑帽。

【试题描述】一楼到十楼的每层电口都放着一颗钻石,石大小不一。你乘坐梯从一楼到十楼,每层都会打一次,只能拿一次石,才能拿到最大的一

第一步:对1到3层的大小进行比较,记住最大的一颗m1。

第二步:4到6层作为参考,将4-6层的与m1作比较,确认最大的一个的平均水平m2。

第三步:在最后4层中当遇到与m2相近时直接拿下

(答案仅供参考)

PS:这个问题类似柏拉图的麦穗问题,属于哲学的范畴了,所以再深入讨论。

【试题描述】U2合唱17内得赶到演唱会,途中必需跨一座,四个人从的同一端出,你得帮助他到达另一端,天色很暗,而他只有一只手筒。一次同最多可以有两人一起过桥,而过桥候必持有手筒,所以就得有人把手去,来回两端。手筒是不能用的方式来传递的。四个人的行速度各不同,若两人同行慢者的速度准。Bono需花1钟过桥Edge需花2钟过桥Adam需花5钟过桥Lay需花10钟过桥。他要如何在17过桥呢?**
姓名 所用时间 简称
Bono 1 min B
Edge 2 min E
Adam 5 min A
Lay 10 min L
步骤 用时 位置状况
1 Bono和Edge过去 Max(1,2)=2min BE—AL
2 Bono回来 1min E—BAL
3 Adam和Lay过去 Max(5,10)= 10min EAL—B
4 Edge回来 2min AL—BE
5 Bono和Edge过去 Max(1,2)=2min BA EL—
总用时:17min

【试题描述】一根不均匀的要用一个小,如何用它来判断半个小?**

只要将绳子两头同时点上即可。

【试题描述】下水道的盖子是的?

参考答案一:相同面积下圆形的井盖最省材料。

参考答案二:圆形井盖可以避免井盖落入下水道中。

*【试题描述】7克、2克砝各一个,天平一只,如何只用些物品三次将140克的分成5090**克各一份?*

第一次:140 = 70 + 70 ,得到两份70g的

第二次:70 = 35 + 35,得到70,35,35

第三次:35 = (7 + 15)+ (2 + 20),得到70,35,15,20

70 + 20 = 90

35 + 15 = 50

*【试题描述】有一15公里的速度离洛杉直奔纽约,另一以第小20公里的速度从纽约开往洛杉。如果有一只,以外30公里的速度和两车现时,从洛杉,碰到另辆车后返回,依次在两来回的行,直道两面相遇,请问只小鸟飞行了多长**距离?*

设New York到LA的距离为S

s = vt = 30km/h S/(15+20)

*【试题描述】你有两个罐子,50球,50球,随机出一个罐子,随机取出一个球放入罐子,怎么给红球最大的中机会?在你的划中,得到红**球的准确几率是多少?*

A罐子里放1个红球,B罐子里放49个红球和蓝球。

选中A罐就等于选中那个红球,几率就是50%,而B罐子也有49/99的几率选到红球。

整个选到红球的几率就是50%+50%*49/99=99/198+49/198=148/198=74/99,

*【试题描述】你有四丸的罐子,丸都有一定的重量,被染的丸是没被染的重量+1.只称量一次,如何判断哪个罐子的污**染了?*

第一个罐子取1颗,第二个罐子取两颗,第三个罐子取3颗,第四个罐子取4颗。称得总重量,然后减去标准重量15,得到n。n为多少就是哪一罐被污染。

*【试题描述】如果你有无多的水,一个3夸脱的和一个5夸脱的提桶,你如何准确称出4**夸脱的水?*

首先用容量3的水桶装满,往容量5的水桶里面装水。然后再取3夸脱的水,将容量5的水桶装满。此时桶里会剩下1夸脱的水。此时,将容量为5的桶清空,将剩下的1夸脱倒过来。再取3夸脱加入即可。

*【试题描述】你有一桶果,其中有黄色,绿色,色三,,上眼睛出同样颜色的两个,抓取同种颜色的两个。抓取多少个就可以确定你肯定有两个同一色的果冻**?*

4个。数量大于颜色,必定有相同的颜色。

*【试题描述】一批1~100全部开关朝上的灯行以下操作凡是1的倍数反方向一次开,2的倍数反方向又一次开关,3的倍数反方向又一次开关……最后为关熄状的灯的编**号。*

10盏是亮的,分别是1 4 9 16 25 36 49 64 81 100;90盏是灭的。

这是因为除了这些平方数以外,其余的任意一个数都能分成不同的两数乘积,质数可以分为1和本身,合数都可以分成若干组乘积(每组两个),因此,这些等都被拉了偶数倍,也就是灭的,平方数因为在被自己的开方数拉是只有一次,所以是奇数次,也就是亮的。随便举两个例子以证明。36分别被1、2、3、4、6、9、12、18、36拉过,共是9次,亮。38分别被1、2、19、38拉过,共是4次,灭。所以10盏是亮的;90盏是灭的

*【试题描述】张圆盘像唱机上的唱样转动这张盘一半是黑色,一半是白色。假你有数量不限的一些感器。要想确定圆盘转动的方向,你需要在它周围摆多少个感器?它们应该放在什么**位置?*

两个。

设两个传感器一个在12点位置(A),一个在1点的位置(B)。

首先利用传感器A的两次变化,估算出转盘转半圈所用的大致时间。然后计时,当B传感器变化的时间较短,证明是由A->B即顺时针。反之为逆时针。

*【试题描述】设时钟到了12点。注意时针和分重叠在一起。在一天之中,时针和分共重叠多少次?你知道它重叠的具体时间吗**?*

22次,即每一小时都会有一次重合(0点和24点视为一次)

分针一小时走360°,时针走30°,也就是说他们的速度差是330°/h。因此第一圈追上的时刻是360/330=(1 + 1/11),即1点5分多点。第二圈追上时刻720/330=2+ 2/11,即2点11分左右。因此得到所有的重叠时刻。

0,1 + 1/11,2 + 2/11,3 + 3/11,4+ 4/11,5 + 5/11,6 + 6/11,7 + 7/11,8 + 8/11,9 + 9/11,10 + 10/11,12,13 + 1/11,14 + 2/11,15 + 3/11,16 + 4/11,17 + 5/11,18 + 6/11,19 + 7/11,20 + 8/11,21 + 9/11,22 + 10/11

【试题描述】一个屋子有一个关闭的)和3盏电灯。屋外有3开关,分3灯相。你可以随意操纵这开关,可一旦你将,就不能变换开关了。确定开关具体管哪灯。**

先在门外打开一个开关,等一会儿,然后关掉它,再另开一个开关,再走到屋内,热而不亮的一个灯泡是第一个开关所控制,亮的便是第二个,不亮又不热的便是第三个开关所控制的了。

*【试题描述】你有8个球,其中一个略微重一些,但是找出个球的惟一方法是将两个球放在天平上比。最少要称多少次才能找出较**重的球?*

两次。

首选,天枰两边各放3个。如果平衡,取剩余两个,天枰上面各放一个可以得到结果;如果不平衡取下较重的三个记为ABC,将AB放在天枰两边,如果不平衡即得到结果,如果平衡C为较重的那个球。

*【试题描述】如果你有两个桶,一个装的是色的料,另一个装的是色的料。你从料桶里舀一杯,倒入料桶,再从料桶里舀一杯倒入蓝颜料桶。两个桶中红蓝颜料的比例哪个更高?通的方式来这**一点。*

假设两个桶里面的颜料各自为10,一杯的容量刚好是1

操作

状态

从蓝色颜料桶里舀一杯,倒入红色颜料桶 10R,1B 9B
再从红色颜料桶里舀一杯倒入蓝颜料桶 (10R + 1B)*(10/11) 9B + (10R + 1B)/11

因此红颜料桶的红蓝比例:10:1,蓝颜料桶红蓝比例:1:10。

【试题描述】

5个海盗抢到了100颗宝石,每一颗都一样的大小和价值连城。

他们决定这么分:

1.抽签决定自己的号码(1,2,3,4,5)

2.首先,由1号提出分配方案,然后大家5人进行表决,当且仅当超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼

3.如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼

4.以次类推

条件:

每个海盗都是很聪明的人,都能很理智的判断得失,从而做出选择

问题:

第一个海盗提出怎样的分配方案才能够使自己的收益最大化?

【试题分析】

首先,看4、5号.如果仅仅剩下这两人。4号肯定选100:0,因为即使5号不同意,按照规则,4号自己同意自己的提案,也算达到半数。所以,5号肯定不会等到4号来表决,他必须支持前三个提案中,给自己最多的一个提案,因为到了4号提案的时候,他肯定什么也得不到。可以推导到3号,如果3号选择给自己99个,4号0个,5号1个,那么5号就不得不同意了,因为这样他至少能得到一个,比最后由4号提案,他什么都得不到强。也就是说,轮到3号提案,他肯定是99:0:1。

也就是说,如果轮到3号选择,4号什么都得不到,那么4号肯定要在前二个提案里,选择一个给自己最多的提案。这时,2号只要在3、4、5号中,赢得一个支持者,就足够获得最终胜利。2号的提案可以是98:0:1:1或98:0:2:0。分析前者,5号在3号那里也可以得到这么多钻石,4号就没得选择,他必须同意2号得提案,否则3号提案时,他什么也分不到;后提案就是针对4号,虽然4号没机会选择,但如果给予他意外的惊喜,他会更加支持2号提案,可以使2号的此提案100%通过。其实这两种提案,本质上没有差别。

不难看出,3号在2号的两种提案里,都不会有好处,也就是说,3号只要能在1号提案中得到好处,就会支持1号的提案。于是,1号的提案里,要充分给予3号的利益,2号的完全可以可以忽略,因为无论如何,2号都不会同意1号的分配方案。

现在,3号只要能获得1个或者1个以上的钻石,4号只要获得2个或2个以上的钻石,5号只要获得1个或1个以上的钻石,就会支持1号提案。实际情况下,如果3、4号都同意,提案不需要5号同意照样可以

【参考答案】

1号自己利益最大化和确保提案通过的分配方法:

1号97个;2号0个;3号1个;4号2个;5号0个

系统工具

1)安装自动选择最快镜像插件 安装插件 fastestmirror,可以让 yum 管理器自动搜索最快源下载

sudo yum -y install yum-fastestmirror

2)添加 rpmfusion 源

sudo yum rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm

3)安装 GNOME-tweak-tool

sudo yum install gnome-tweak-tool

4)标题栏添加“最大化/最小化/关闭”按钮 可以通过安装 gnome-tweak-tool 来设置。打开 gnome-tweak-tool,“shell"-> Arrangement of buttons on the titlebar”可选择"All"

5)让桌面显示文件,激活右键功能 打开 gnome-tweak-tool,"Desktop","Have file manager handle the desktop","开启"

6)安装 gconf-editor:

sudo yum install gconf-editor

7)安装鼠标右键“在终端中打开”

sudo yum install nautilus-open-terminal

常用工具

安装 Gnome Do

sudo yum install gnome-do

安装 Compiz

sudo yum install compiz-manager
sudo yum install ccsm

安装 Docky

sudo yum install docky

安装解压缩软件 7z

sudo yum install p7zip p7zip-plugins

安装截图工具 shutter

sudo yum install shutter

安装小熊猫

sudo yum install ailurus

多媒体

安装 amarok

sudo yum install amarok

安装 smplayer

sudo yum install smplayer

安装 EasyTag

sudo yum install easytag

网络应用

安装 Chrome URL: www.google.cn/Chrome

安装 FTP 客户端

sudo yum install filezilla

通讯工具

安装 MSN 客户端

sudo yum install emesene

开发工具

gcc

sudo yum install gcc

g++

sudo yum install gcc-c++

autoconf && automake

sudo yum install autoconf automake

gdb

sudo yum install gdb

Geany

sudo yum install geany

vim

sudo yum install vim

Subversion

sudo yum install subversion

Git

sudo yum install git

Eclipse

sudo yum install eclipse-platform

CDT

sudo yum install eclipse-cdt
or http://download.eclipse.org/tools/cdt/releases/indigo

PyDev

sudo yum install eclipse-pydev
or http://pydev.org/updates

Subclipse

sudo yum install eclipse-subclipse
or http://subclipse.tigris.org/update_1.8.x

Texlipse

sudo yum install eclipse-texlipse
or http://texlipse.sourceforge.net