容斥原理一般用于解决‘至少’型问题,是一种很好用的计数方法。下面通过两个问题来了解容斥原理解决的问题类型,并推广容斥原理。
问题1:某班考了数学和语文两门课程,其中数学满分的共15人,语文满分的共10人,两门课都满分的共3人,请问至少有1门课程得满分的共多少人?
容斥问题的基本原理:
$$ vert A cup B vert = vert A vert + vert B vert - vert A cap B vert $$
根据原理计算:15+10-3=22
韦恩图很直观:
3+7+12=22
该维恩图制作网站:http://bioinfogp.cnb.csic.es/tools/venny/
问题2:某班考了语、数、外三门课程,其中数学满分的共10人,语文满分的共5人,英语满分的共11人,数学与语文都满分的共2人,数学与英语都满分的共5人,语文与英语的都满分的共3人,三门课都满分的共1人,请问至少有1门课程得满分的共多少人?
维度增加了1维,计算方法稍有不同:
$$ vert A cup B cup C vert = vert A vert + vert B vert + vert C vert - vert A cap B vert - vert A cap C vert - vert B cap C vert + vert A cap B cap C vert $$
计算方法:10+5+11-2-5-3+1=17
韦恩图:
1+1+1+1+4+4+5=17
将问题推广到N维的情况,则得到容斥原理的更一般的公式形式:
$$ vert A_1 cup A_2 cup ... cup A_n vert = sum_{1 leq i leq n} vert A_i vert - sum_{1 leq i < j leq n} vert A_i cap A_j vert + \ sum_{1 leq i < j < k leq n} vert A_i cap A_j cap A_k vert - ... + (-1)^{n-1} vert A_1 cap A_2 cap ... cap A_n vert $$
上式可以紧凑的写成:
$$ vert igcup_{i=1}^n A_i vert = sum_{k=1}^n (-1)^{k+1} (sum_{1 leq i_1 < ... < i_k leq n} vert A_{i_1} cap ... cap A_{i_k} vert) $$
对于上面这两个公式通过归纳法证明得到,参考:百度百科、wikipedia
广义容斥原理:可用与解决一类‘恰好’型问题。ps:挖个坑,改天再填。。。