三国杀收藏吧 关注:20,745贴子:1,175,222

回复:【展示】楼主教你凑无角标神话再临与带权重集合覆盖问题的研究

只看楼主收藏回复

10、S特别版《乱世诸神》/I7《旗舰版》
《乱世诸神》的神话再临武将都是有角标的,但是《乱世诸神》却为我们提供8张无角标神将,其中四张异画(神关羽、神周瑜神诸葛、神吕布),四张标准插画(神吕蒙、神曹操、神赵云、神司马)。
《乱世诸神》和《旗舰版》唯一的区别就是牌背,前者单框,后者双框。



IP属地:北京来自Android客户端17楼2020-04-24 00:00
回复
    至此,无角标神话再临武将已经收录了33张,还缺7张,他们分别是:
    风:于吉、神关羽;
    火:庞德、神诸葛、神周瑜;
    林:神吕布;
    山:左慈;




    IP属地:北京来自Android客户端18楼2020-04-24 00:02
    回复
      于吉和左慈这样的边缘人物很难出现在人物列传中,所以应该是不可能有了,如果有人有的话欢迎告诉我。庞德我想了想,有两个角色可能会提到,一个是关羽(抬棺死战),一个是马超(部将),一个是于禁(部将)。果不其然,无角标的庞德出现在S2《五虎上将:马超传》中,可惜是窄卡。而神将,基本也是可遇而不可求,如果有人有的话欢迎告诉我。至此,我们的无角标神话再临收集就告一段落。
      最后楼主给大家留个课后作业,请大家凑一下无角标版的一将成名,请同学们认真复习,在下面回帖。


      IP属地:北京来自Android客户端19楼2020-04-24 00:03
      回复
        第一部分 完


        IP属地:北京来自Android客户端20楼2020-04-24 00:04
        回复
          第二部分 带权重集合覆盖问题的研究
          关键词:集合覆盖、贪心算法、
          我们把上面的数据列成表格,那么会有一个新的问题:我要买哪些版本才能凑齐呢?


          IP属地:北京来自Android客户端21楼2020-04-24 00:05
          回复
            现在我们来手工推导一下。《卧龙传》、《凤雏传》、《曹操传》、《貂蝉传》和《乱世诸神》是必买的,为什么呢?因为这些版本有唯一存在的卡。这些版本已经涵盖了31张,还剩2张分别是周泰和双将。周泰有两个选择:《火烧赤壁》和《火烧连营》;双将也有两个选择:《桃园结义》和《官渡之战》,那么分别2选1即可。


            IP属地:北京来自Android客户端23楼2020-04-24 00:07
            回复
              那么同学们会想,如果官盗有100个版本,这100个版本都有我们想要的卡,并且,所有卡都不是唯一存在的,那我们要怎样去选择版本呢?


              IP属地:北京来自Android客户端24楼2020-04-24 00:07
              回复
                显然,这时候你再去手动推导就比较复杂了。如果我们还想凑一将的卡,那么这个集合就会变得很大,这时候再去一个一个对,就会非常困难,所以我们必须要想一个算法来解决这个问题。


                IP属地:北京来自Android客户端25楼2020-04-24 00:08
                回复
                  这就是计算机中的集合覆盖问题(Set Covering Problem,简称SCP)。它是Karp的 21个NP难问题之一。它是运筹学研究中典型的组合优化问题之一,大到工业领域,如资源选择问题、设施选址问题;小到如何如何最省钱获得整套三国杀闪卡,如何最省钱凑齐魔法士三国杀等。



                  IP属地:北京来自Android客户端26楼2020-04-24 00:10
                  回复
                    我们可以把问题定义如下:给定集合E={e1, e2, ..., en }的子集的集合S,从S中选择子集C,使得C的并集覆盖E,并且C的元素个数最少。


                    IP属地:北京来自Android客户端27楼2020-04-24 00:11
                    回复
                      输入:
                      E={1,2,3,4,5,6,7}
                      SA={3,7}
                      SB={3,4,5,6}
                      SC={1}
                      SD={2,4}
                      SE={5}
                      SF={1,2,6,7}
                      输出:
                      C={SB,SF}


                      IP属地:北京来自Android客户端29楼2020-04-24 00:14
                      回复
                        当然,实际应用中,我们往往还要考虑权重。给定集合E={e1, e2, ..., en }的子集的集合S和S中每个子集的权重w,从S中选择子集C,使得C的并集覆盖E,并且C的权重之和最小。


                        IP属地:北京来自Android客户端30楼2020-04-24 00:14
                        回复
                          还是上面的例子:
                          商家A打包出售3号和7号,卖10元;
                          商家B打包出售3号、4号、5号和6号,卖100元;
                          商家C打包出售1号,卖10元;
                          商家D打包出售2号和4号,卖20元;
                          商家E打包出售5号,卖5元;
                          商家F打包出售1号、2号、6号和7号,卖50元;
                          这时候如果购买商家B和F的话,虽然能凑齐,但是花了150元;但如果购买商家A、D、E、F的话,只要花85元。
                          很显然,这个问题比上个问题多了权重,也就是价格。我们生在普通家庭,我们还是要追求最小的成本。其实不带权重集合覆盖问题是带权重集合覆盖问题的一个特例,不带权重集合覆盖问题中,每个集合S的权重都是一样的。也就是说,每个商家总价都一样,那这时,如果你是一个土豪,比如鸡豪,那你会觉得,100块钱和1块钱有啥区别?没有区别。和越多的商家交涉,会浪费更多的时间成本,倒不如你帮我凑齐,我给你10000块不用找了。那这样就要选择不带权重集合覆盖问题的数学模型。但毕竟楼主是穷人,能花5块钱买,绝对不会花10块钱(当然最好是白嫖)。那这个时候,我们就要选择带权重集合覆盖问题的模型。


                          IP属地:北京来自Android客户端31楼2020-04-24 00:15
                          收起回复
                            输入:
                            E={1,2,3,4,5,6,7}
                            SA={3,7},WA=10
                            SB={3,4,5,6},WB=100
                            SC={1},WC=10
                            SD={2,4},WD=20
                            SE={5},WE=5
                            SF={1,2,6,7},WF=50
                            输出:
                            C={SA,SD,SE,SF},W总=85


                            IP属地:北京来自Android客户端32楼2020-04-24 00:16
                            回复
                              求解这类问题,我们首先想到的是使用穷举的方法,比如上面有6个子集集合,我们就有2的6次方(64)种组合,再通过排序,就可以找到最优解。


                              IP属地:北京来自Android客户端33楼2020-04-24 00:17
                              回复