• 排列组合


    前几天  弦中子 老师 在  反相吧 发了一个 帖 《快递员问题可否这样思考?》   https://tieba.baidu.com/p/6763029470     。

     

    1  楼 提出了一个 “快递员问题” :

    有一个快递员从家里出发,要经过n个点后回到家里,请问他走的最短路程是哪一条?

     

     

     

     

    我 在 10 楼 这样回复 :

    弦老师 的 这种 情况, 光 绝对 摸不着 头脑 该走 哪一个路径 是 “最近” 的 ,

    那个 光, 估计 会 站在 那里 一直想 , 一直想 …… 于是 光速 为 0 了 。

    假设 有 n 个 节点, 求 这些 节点 的 排列数量 = n ! , 每一个 排列 组成一条 路径, 计算 每一条 路径 的 长度, 排个序, 就知道 最短 的 路径 是 哪条 了 。

     

    这里 引出 了 一个 排列组合 的 问题 。   排列 和 组合 都是 组合,  排列区分元素顺序,  组合不区分元素顺序,  比如 AB 和 BA 是 不同 的 排列,  是 同一个 组合 。

    假设 有 ABCD  4 个 字母,   从中 拿出 2 个 字母 来 排列, 有多少种 排列 ?       排列考虑元素顺序,  不同的顺序算不同的排列 。

    会有    4^2 = 4 * 4 = 16 种 排列  。  具体是 

     

    AA, AB, AC, AD

    BA, BB, BC, BD

    CA, CB, CC, CD

    DA, DB, DC, DD

     

    如果 是 从 ABCD 中 拿出 3 个 字母 来 排列,  则 会有   4^3 = 4 * 4 * 4 = 64   种 排列  。

     

    这种 排列 允许 同一个 字母 在 一个 排列 中 重复使用,  比如 AA,  BB,   AAA,   BBB,   AAB,   BBD   。

     

    如果 不允许 同一个 字母 在 一个 排列 里 重复使用,    那么 从 ABCD 中 拿出 2 个 字母 来 排列,  有多少种 排列 ?

    有   4 * 3 = 12   种 排列 。   具体是 

    AB, AC, AD

    BA, BC, BD

    CA, CB, CD

    DA, DB, DC

     

    不允许 同一个 字母 在 一个 排列 里 重复使用,   从 ABCD 中 拿 3 个 字母 来 排列,  有   4 * 3 * 2 = 24 种 排列,

    ABC  ABD, ACB, ACD, ADB, ADC

    BAC, BAD, BCA, BCD, BDA, BDC

    CAB, CAD, CBA, CBD, CDA, CDB

    DAB, DAC, DBA, DBC, DCA, DCB

     

    不允许 同一个 字母 在 一个 排列 里 重复使用,   从 ABCD 中 拿 4 个 字母 来 排列,  有  4 * 3 * 2 * 1 = 4 !  种 排列,    这跟 上面 拿 3 个 字母 来 排列 是 一样 的,

    ABCD  ABDC, ACBD, ACDB, ADBC, ADCB

    BACD, BADC, BCAD, BCDA, BDAC, BDCA

    CABD, CADB, CBAD, CBDA, CDAB, CDBA

    DABC, DACB, DBAC, DBCA, DCAB, DCBA

     

    如果 把 ABCD 看作 4 个 点,    这  4 !   种 排列 就是 把 4 个  点 连起来 可能 得到 的 路径,  就是 本文开头 的 快递问题 里 的 n 个点 可以 有 多少种 路径  。

     

     

    再来看看 组合 。    ABCD  4 个 字母 拿 2 个 字母 出来 组合,  有多少种 组合 ?

     

    有  4 - ( 2 - 1 ) + 3 - ( 2 - 1 ) + 2 - ( 2 - 1 )  = 3 + 2 + 1 = 6  种 组合 。

     

    具体是   AB, AC, AD, BC, BD, CD   。

     

    ABCD 中 拿  3 个 字母 出来 组合,  有多少种 组合  ?

     

    有   4 - ( 3 - 1)  +  3 - ( 3 - 1 )  +   3 - ( 3 - 1 )  =   2 + 1 + 1 = 4  种

     

    具体是     ABC  ABD  BCD  ACD    。

     

    ABCDE  5 个 字母 拿 2 个 字母 出来 组合,   有多少种 组合 ?

     

    有    5 - ( 2 - 1 ) + 4 - ( 2 - 1 ) + 3 - ( 2 - 1 ) + 2 - ( 2 - 1 )= 4 + 3 + 2 + 1 = 10 种

     

    具体是   AB AC AD AD AE BC BD BE CD DE   。

     

    ABCDE  5 个 字母 拿 3 个 字母 出来 组合,   有多少种 组合 ?

     

    有  5 - ( 3 - 1 ) + 4 - ( 3 - 1 ) + 3 - ( 3 - 1 ) + 4 - ( 3 - 1 ) + 3 - ( 3 - 1 ) + 3 - ( 3 - 1 ) =  3 + 2 + 1 + 2 + 1 + 1 = 10 种

     

    具体是  ABC ABD ABE ACD ACE ADE BCD BCE BDE CDE   。

     

    ABCDE  5 个 字母 拿 4 个 字母 出来 组合,   有多少种 组合 ?

     

    有  5 - ( 4 - 1 ) + 4 - ( 4 - 1 ) + 4 - ( 4 - 1 )  =  2 + 1 + 1 = 4 种

     

    具体是   ABCD  ABCE   ACDE   BCDE     。

     

     

    排列组合 问题 如果 让 条件 丰富一些,  解起来也会很麻烦的, 甚至有点变态 。  比如 让 组合 里 同一个字母 可以重复出现 。

    比如    ABCDE 5 个 字母 里 拿 4 个 字母 出来 组合,   允许同一个 字母 在 一个组合 里 重复出现的话,  就会有   AABC  ABBD BACA   CCCE   DDDD    这样 的,

    当然,  因为 组合 不区分 元素顺序,      AABC 和 BACA  是 同一个 组合 。

     

    研究 排列组合 还有  把 一些 节点 连起来 形成  一些 路径 等等,   这一类 的 数学 称为 组合数学,   组合数学 研究 离散场景,  所以 也叫 离散数学 。

    组合数学 这个 名字 总让人 想起 一些 标有数字 的 小球  排列 堆叠 成 一些  图形,  还有 把 一些 点 连成 路径 什么的,   所以 很自然的,  会 把 研究 这些 问题 的 数学 叫做 组合数学 。

     

    我以前说过 “组合数学 是 人的本能, 根本不用学习” ,    其实 也 差不多,   我觉得吧,   组合数学 是 最业余 的 数学,  微积分 是 最专业 的 数学,   代数几何 是 最有范  的 数学   。

     

     

    数学,   分成   代数 、几何 、微积分 、组合数学   这样 几大类 就可以了,   哪有 那么多 啰里啰唆  。

     

    组合数学 是 一个 有趣 的 数学,    可以 比较 娱乐性 的 来 学习 研究,   而且 也 挺有 实用性  的  。

     

  • 相关阅读:
    audio_policy.conf说明(翻译)
    Qt
    linux C
    Linux C
    Linux C
    Qt
    Qt
    JSON
    JSON
    Qt
  • 原文地址:https://www.cnblogs.com/KSongKing/p/13193086.html
Copyright © 2020-2023  润新知