我決定學習併發性,並想知道來自兩個不同進程的指令可以重疊多少種方式。這兩個進程的代碼只是一個10迭代循環,每次迭代執行3條指令。我發現問題包括將X指令固定在某一點上,然後在考慮到它們必須被訂購(過程B的指令4必須始終在指令20之前)的情況下,將空間之間的其他過程的其他X指令裝入其中。神祕的組合
我寫了一個程序來計算這個數字,看着結果我發現解決方案是n組合k,其中k是在一個進程的整個循環中執行的指令的數量,所以對於10次迭代它會是30,並且n是k * 2(2個過程)。換句話說,n個固定n/2的物體並且必須在空間中適合n/2而沒有n/2丟失它們的順序。
好的問題解決了。不,不是。我不知道爲什麼會這樣,我知道一個組合的定義是,在多少種方式中,你可以從一組n個元素中取出k個元素,這樣所有的組都是不同的,但是元素的順序並不是'沒關係。在這種情況下,我們有n個元素,並且我們實際上將它們全部取出,因爲所有指令都被執行(n C n)。
如果用一個袋子裏有2k個藍色(A)和紅色(B)物體來解釋它,並且從包裏取出k個物體,那麼當實際執行2k個指令時,您仍然只需要k個指令。你能否介紹一下這個問題?
在此先感謝。
爲了上帝的愛,段落休息。 – 2010-04-10 12:27:52