100 人排成 10×10 方陣。
甲:每行挑最高 → 10 人 → 再挑最矮。
乙:每列挑最矮 → 10 人 → 再挑最高。
問:甲、乙誰高?
person[i][j] (i=行, j=列)rowMax[i] = max_j(person[i][j])colMin[j] = min_i(person[i][j])
甲 ≥ person[r][c] (甲 ≥ 同行所有元素)
乙 ≤ person[r][c] (乙 ≤ 同列所有元素)
∴ 甲 ≥ person[r][c] ≥ 乙 → 甲 ≥ 乙
結論:甲 ≥ 乙 恆成立,等號僅在特定矩陣(如遞減矩陣)時成立。
9 8 7 6 5 8 7 6 5 4 7 6 5 4 3 6 5 4 3 2 5 4 3 2 1
{9,8,7,6,5} → 甲 = 5{5,4,3,2,1} → 乙 = 5此問題對應零和博弈的極大極小值:
max_min ≤ min_max 恆成立(von Neumann 極大極小定理)。
甲 = max_min(行玩家保守策略),乙 = min_max(列玩家保守策略)。
若存在鞍點,則甲 = 乙 = 鞍點值,雙方均無單方面改變策略的誘因。
int[][] a = {{9,8,7,6,5},{8,7,6,5,4},{7,6,5,4,3},{6,5,4,3,2},{5,4,3,2,1}};
int jia = Arrays.stream(a).mapToInt(row -> Arrays.stream(row).max().getAsInt()).min().getAsInt();
int yi = IntStream.range(0,5).map(c -> Arrays.stream(a).mapToInt(r -> r[c]).min().getAsInt()).max().getAsInt();
System.out.println("甲=" + jia + " 乙=" + yi); // 甲=5 乙=5
**甲(行極大值的極小值)永遠 ≥ 乙(列極小值的極大值)。** 這不只是邏輯題,更是博弈論、優化理論、矩陣分析的基石結論。下次面試遇到類似「極大極小」「鞍點」關鍵字,直接推導此不等式即可。