奪門之變
當(dāng)當(dāng)網(wǎng)4月26日發(fā)來聲明,稱今天早上李國慶伙同5人,闖入當(dāng)當(dāng)網(wǎng)辦公區(qū),搶走幾十枚公章、財(cái)務(wù)章,公司已經(jīng)報(bào)警。

李總贏定了
此事的是非對(duì)錯(cuò),咱們先不去評(píng)說,把重點(diǎn)放到最終結(jié)果的預(yù)測上!
我的判斷是李總大概率贏定了。
理由是:從歷史上看比"奪門之變"更慘烈的"玄武門"之變,最后的勝利者可是姓"李"。
不開玩笑的說,這事可以用算法來證明。
最優(yōu)策略(Optimal Strategy)
這場"奪門之變"對(duì)看客來說是吃瓜大戲。
對(duì)“李總”和“夫人”來說也就是一場博弈游戲。
為了更好的說明這個(gè)問題,我們可以把“這個(gè)瓜”映射到下面的模型上。
1 李總和夫人交替發(fā)招
2 可以從{"水軍":8 , “上訴”:15, “裁員”:3, "搶章":7 } 字典中選擇動(dòng)作(現(xiàn)實(shí)情況可選擇的動(dòng)作要比這個(gè)多很多)
每個(gè)動(dòng)作都會(huì)給選擇人帶來收益。我們把收益抽出來組成【8, 15, 3, 7】列表。
3 每個(gè)參與者必須根據(jù)對(duì)手的策略做出選擇,為了接近真實(shí)情況,我們加入如下限制:
只能從列表的頭部或者尾部選擇收益。
4 獲勝條件:最后收益最大的人獲勝。
我們就用這個(gè)小規(guī)模問題來演示最優(yōu)策略思路
李總在[8, 15, 3, 7]中選擇7.
夫人在[8,15, 3] 中選擇8.
李總在[15, 3]中選擇15.
夫人最后只能選擇3了.
李總最后的收益為: 22(7 + 15)
由于問題規(guī)模較小,這是我們用眼睛解題的過程。那如果規(guī)模較大呢?
輔助工具遞歸樹

我們定義函數(shù)os,它可以返回對(duì)應(yīng)規(guī)模問題的最優(yōu)解。
本例中os(i=1, j=4) 代表問題規(guī)模為從1到4兩個(gè)規(guī)模之間存在的關(guān)系為
os(i,j) = max(
val[i] + min( os(val, i+1, j-1), os(val, i+2, j)),
val[j] + min( os(val, i, j-2), os(val, i+1, j-1))
)

參加游戲的人都不是傻子,在做出本次選擇后,你的對(duì)手一定會(huì)在剩下的方案中去尋找最優(yōu)解,所以你下一次能拿到的值,一定是os(i+2, j), os(i+1, j-1)中小的那一個(gè)。
- 退出條件
I > J 此時(shí)全部問題處理完
I == J 返回val[I]
I == J+1 返回最后兩個(gè)中的最大值。
有了思想,代碼就不難了。
奉上代碼
def os(val, i, j):
if i > j:
return
if i == j:
return val[i]
elif j == i + 1:
return max(val[i], val[j])
else:
return max(
val[i] + min( os(val, i+1, j-1), os(val, i+2, j)),
val[j] + min( os(val, i, j-2), os(val, i+1, j-1))
)
val = [8, 15, 3, 7]
i = 0
j = len(val)
res = os(val, i, j-1)
opponent=sum(val) - res
print("做為先手你可以拿到:{}\n你的對(duì)手可以拿到:{}".format(res, opponent))
輸出:
做為先手你可以拿到:22
你的對(duì)手可以拿到:11
這段代碼中,會(huì)有Overlapping Subproblems問題,優(yōu)化一下為:
def os(val, i, j):
if i > j:
return
if dp[i][j] == -1:
if i == j:
dp[i][j] = val[i]
elif j == i + 1:
dp[i][j] = max(val[i], val[j])
else:
dp[i][j] = max(
val[i] + min( os(val, i+1, j-1), os(val, i+2, j)),
val[j] + min( os(val, i, j-2), os(val, i+1, j-1))
)
return dp[i][j]
val = [8, 15, 3, 7]
i = 0
j = len(val)
dp = [[-1]*j for _ in range(j)]
res = os(val, i, j-1)
opponent=sum(val) - res
print("做為先手你可以拿到:{}\n你的對(duì)手可以拿到:{}".format(res, opponent))
對(duì)動(dòng)態(tài)規(guī)劃細(xì)節(jié)感興趣,可以參考我以前的博文,鏈接我放到文章末尾。
用算法來觀察這個(gè)世界是不是很有趣?!
先下手為強(qiáng)
當(dāng)當(dāng)網(wǎng)曾被稱為是中國的亞馬遜,像李總這樣的老江湖,能力自然不言而喻。這次能夠先出
手,發(fā)動(dòng)雷霆一擊,一定在背后把所有細(xì)節(jié)推演過無數(shù)遍。
通過我們剛才對(duì)最優(yōu)策略學(xué)習(xí),應(yīng)該意識(shí)到:“這先下手的一方,只要不出現(xiàn)大失誤,李總基本就贏定了。先下手就是強(qiáng)。
當(dāng)當(dāng)有你
如果你了解"演化思維"會(huì)更好的理解以下內(nèi)容。(推薦閱讀凱文凱利的《失控》)
關(guān)鍵字:合作優(yōu)于對(duì)抗
縱觀人類的歷史,人類的發(fā)展靠的是合作而不是沖突。
我個(gè)人的觀點(diǎn):當(dāng)當(dāng)網(wǎng)這次如果用對(duì)抗的思路解決問題,不管是李總還是夫人獲勝,對(duì)當(dāng)當(dāng)可能都不是最優(yōu)的結(jié)果。
最優(yōu)的結(jié)果是合作。
李總和夫人合作一起共度難關(guān),讓曾經(jīng)的中國亞馬遜再現(xiàn)輝煌。沒有什么比這個(gè)結(jié)果,能讓李總,夫人,以及當(dāng)當(dāng)?shù)膯T工,甚至是這個(gè)社會(huì)獲得最大的收益。
具體執(zhí)行步驟:
1 現(xiàn)在這個(gè)事件正在風(fēng)口,各方的關(guān)注力使得當(dāng)當(dāng)網(wǎng)可以輕松獲得大量的流量。
2 既然這么多人吃瓜,每個(gè)人都有自己的支持對(duì)象,那就來投票好了。
3 李總和夫人分別站出來,發(fā)放帶有自己身份標(biāo)識(shí)的消費(fèi)券,在當(dāng)當(dāng)網(wǎng)消費(fèi)——讓大家用錢來投票好了。
本質(zhì)上就是當(dāng)當(dāng)網(wǎng)的"青春有你2" —— “當(dāng)當(dāng)有你”。
4 同時(shí)結(jié)合各種商家活動(dòng),推動(dòng)線上,線下業(yè)務(wù)發(fā)展。業(yè)務(wù)發(fā)展好了,股價(jià)自然會(huì)上升。
5 在疫情期間,消費(fèi)券還可以拉動(dòng)內(nèi)需,讓全社會(huì)收益。
以上只是思路,具體執(zhí)行會(huì)有更多的細(xì)節(jié)需要考慮。
以上僅作為拋磚引玉。
最后祝李總和夫人能夠度過難關(guān),讓當(dāng)當(dāng)網(wǎng)重現(xiàn)當(dāng)年的輝煌!
你支持誰?
如果這是一場零和博弈,你只能在李總和夫人中選一個(gè)人,你會(huì)支持誰?
請寫在評(píng)論區(qū),讓世界聽見你的聲音!
當(dāng)然也歡迎你把更好的解決思路,寫在評(píng)論區(qū)。
祝福
最后祝李總和夫人能夠度過難關(guān),讓當(dāng)當(dāng)網(wǎng)重現(xiàn)當(dāng)年的輝煌!