精华内容
下载资源
问答
  • 我们的案例分析方式是根据哈佛大学与中欧国际工商学院的案例分析方法来总结出我们的模式的。这种分析方法包括两种互相关联和依赖的方面。第一方面,就是要对所指定的将供集体讨论的案例,做出深刻而有意义的分析,...
    80a215c109d7ac7a751b3f2379246f62.png

    我们的案例分析方式是根据哈佛大学与中欧国际工商学院的案例分析方法来总结出我们的模式的。这种分析方法包括两种互相关联和依赖的方面。

    第一方面,就是要对所指定的将供集体讨论的案例,做出深刻而有意义的分析,包括找出案例所描述的情景中存在的问题与机会,找出问题产生的原因及各问题间的主次轻重关系,拟订各种针对性备选方案,提供他们各自的支持性论据,进行权衡对比以后,从中做出抉择,制定最后决策,并作为建议供集体讨论。

    第二方面的分析容易为人们所忽视,那便是以严密的逻辑,清晰而有条理的口述方式,把自己的观点表达出来,没有这方面的分析,前面分析的质量即使提高,也很难反映在你参与讨论所获得的成绩里。

    案例分析的步骤

    究竟采用哪种分析方法,分析何种深度,在很大程度上取决于分析者对整个案例所采的角度和在本课案例所打算扮演的角色。但不论你的具体战略角度如何,这里向读者提供一个实用性很广、既简单又有效的分析步骤。它包括五个主要步骤:

    cb311ca366c064125b4cd7f8cc9c62d9.png

    案例分析的五步骤

    一、案例前言

    在案例分析的过程中,针对案例进行前期引导,为案例描述做好铺垫。案例前言,我们并没有做过多的引导。只把问题梳理出来,大致介绍案例的基本概况便引出问题。它的主要作用在于给读者一种方向性的向导,便于读者阅读前了解大概或者勾引出读者敏感、兴趣的好奇心。

    二、案例描述

    针对案例发生的经过,进行详细的描述,力求让读者进入一种真实的案例现场状态。感同身受,是我们案例描述的主要目标。在本阶段,我们采用多种方式进行案例的描述,给读者多一些视角去看案例,看起来不是统一的一个模式,那种比较乏味。主要的写法有:意外式案例描述、主题式案例描述、课题研究式案例描述以及综合式案例描述。还有其他的一些,在这里就不全部介绍。

    1、意外式案例描述

    反映主人公巧妙处理发生的出人意料而又合乎情理的偶发事件的案例。

    特点:出乎意料之外,但在情理之中;问题格外集中,矛盾十分突出;故事情节不复杂,但能由小见大。

    2、主题式案例描述

    重点围绕一定主题而展开描述的典型实例。这类案例有时按照一定专题开发,如自主学习专题、探究式学习专题、合作学习专题、等等。

    特点:主题鲜明,内容新颖;注重专题研究,富有学术价值。

    3、课题研究式案例描述

    这类案例是读者在引导下按课题展开自主研究的典型实例,因为这种案例有的时间跨度较长,基本上通过综合实践的学习活动开发。

    特点:以研究为主;读者的研究具有很强的自主性;读者的学习目的与社会生活紧密结合。

    4、综合式案例描述

    这是运用描述过程中的一部分内容进行的典型实例。

    特点:体现案例的整体性;以读者的学习为主线,十分重视读者的感悟、体验和新的发现;强化案例的精彩场面。还有的综合式案例是由几个围绕相同主题的小案例组成的。

    5a3a7dac643dbec8659c013a7a6fa2bf.png

    案例六描述

    三、问题分析

    针对所描述出来的经典案例进行多元化角度分析,引导读者思考的方式。它的主要目标是让读者学会分析的系统流程。在此阶段,我们会给予很多咨询工具,并用这些咨询工具的分析方法来分析案例。给予读者一种MBA课程的真实感,比如SWOT、STP、TOC等等分析工具。使读者掌握分析问题的程序和逻辑,提高分析质量,降低决策失误。从根本上摆脱“拍脑袋”的分析方式,树立起良好的问题分析习惯。

    案例的分析方法,当然取决于个人的偏好与案例的具体情况。这里介绍三种可供选择的分析方法。所谓一般分析法,也就是分析的主要着眼点,着重考虑和探索方面,或者是分析时的思路。

    1、系统分析法:把分析的组织看成是不断的把各种投入因素转化为产出因素的过程中的一个系统,了解该系统各组成部分和它们在转化过程中的相互联系,就能更深刻的理解有关的行动和更清楚地看出问题。有时,用图来表明整个系统很有用,因为用图能帮助你了解系统的有关过程及案例中的各种人物在系统中的地位与相互作用。管理中常用的流程图就是系统法常用的形式之一。

    投入——产出转化过程一般可分为若干基本类型:流程型,大规模生产型(或叫装配型),批量生产型与项目生产型等。生产流程的类型与特点和组织中的各种职能都有联系。

    2、行为分析法:分析着眼于组织中各种人员的行为与人际关系。注视人的行为,是因为组织本身的存在,它的思考与行动都离不开具体的人,都要由其成员们的行为来体现,把投入变为产出,也是通过人来实现的。人的感知、认识、信念、态度、个性等各种心理因素,人在群体中的表现,人与人之间的交往、沟通、冲突、与协调,组织中的人与外界环境的关系,他们的价值观、行为规范与社会结构,有关的组织因素与技术因素,都是行为分析法所关注的。

    3、决策分析法:这不仅限于“决策树”或“决策论”,而且指的是使用任何一种规范化,程序化的模型或工具,来评定并确定各种被选方案。管理理论中有多种常见的决策技术,这里并不做介绍。要记住,单单知道有多种被选方案是不够的,还要看这些方案的相互关系,要看某一方案实现前,可能会发生什么事件以及此事件出现的可能性的大小如何。

    ebf3069552b033dd7d2b3da82740d326.png

    三大问题分析法

    四、解决方案

    针对案例提出可行性的解决方案,给读者做强有力的思想支持以及对项目的一种借鉴。

    真正把握住案例的实质与要点,这是所必须要做的一步。一般我们不凭自己的常识去找出答案,而是站在客观的角度给予。但都是围绕本案例主题的性质去发掘,找出这些问题的一个办法。读者也可以根据自己的思想去思考,就是试着去设想,假如读者是该案例中的主人公,会做出些什么样的解决答案?读者还得想想,在给予此案例时可能会提出什么问题?总之,要多想,不要陷入只重视局部而忽略整体的解决方案。

    五、案例引申

    案例回顾及引发其他的思考。分析每个案例完后,我们都会给读者进行案例的引申。主要的目的在于:

    1、扩展读者的思维。扩展读者在案例中的新思维,起到举一反三的效果,令读者丰富案例的知识量。

    2、加深案例的印象。通过案例里的引申再回过头来看案例,能使读者对案例加深印象。从而达到温故而知新的效果。

    案例引申的分析方法和问题分析时不太一样。这要取决于你具体的战略与战术方面的考虑。这里举出三种最常见的分析类型,以供读者参考。

    d150c0ab994595030001dfda8edf1cb6.png

    三大类型分析

    (1)综合型分析:对案例中所有关键问题外都进行深入分析,列举有利的定性与定量据,提出重要解决方案和建议。

    (2)专题型分析:不是全线出击,而是着重分析某一个或数个专门的问题。所选的当然是最内行、最富经验、掌握情况最多、最有把握的、可以充分扬长避短的问题。这样就可以相对其他知识分析得深刻、细致、透彻,提出独到的创见。讨论中只要读者把一个方面的问题分析透了,就是重要的贡献。

    (3)游击型分析:对所布置的问题,或某一明显的题目,做一次简单的、蜻蜓点水式的分析,多半是一般性的、表面的、肤浅的。这种游击式分析,只是因故案例有些局限性,有些问题不便于公开,才有此分析,但分析的目的是能给读者扩宽一种思路,指望收瞬间曝光之效。这当然只能万不得已时,偶尔为之。其他的案例引申大多都采用前面两种分析模式。

    来自: 工业品营销研究院

    展开全文
  • .xls甘特图其内在思想简单,基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况,它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比。甘特日程图 .ppt...
    49165d95459e86ad3f20c89361022c70.png

    图片:图虫创意

    全自动甘特图excel模板 .xls

    甘特图其内在思想简单,基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况,它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比。

    c12dc597bf8654faec861e148255f7cb.png

    甘特日程图 .ppt

    甘特图包含以下三个含义:

    1.以图形或表格的形式显示活动。

    2.现在是一种通用的显示进度的方法。 

    3.构造时应包括实际日历和持续时间,并且不要将周末和节假日算在进度之内。

    cf63f721f5fcc8f180e1d90a86f1e48a.png

    行业竞争战略最流行的分析工具:波特五力分析 .pdf

    该模型的主要思想是:企业获取竞争优势的关键在于企业所处行业的盈利能力(行业的吸引力)和企业在行业内的相对竞争地位。因此.企业战略管理的首要任务是通过分析供应商、购买者、当前竞争对手、替代产品和潜在进入者等五种因素,选择具有潜在高利润的行业。选定行业后,企业应根据自身力量与五种力量的对比情况来选择低成本,差异化或集中化等三种战略之一作为自己的竞争战略。

    7729955a009acf333e017cf311df7f03.png

    市场营销策划案例经典大全-含SWOT分析 .doc

    SWOT是一种分析方法,用来确定企业本身的竞争优势(strength),竞争劣势(weakness),机会(opportunity)和威胁(threat),从而将公司的战略与公司内部资源、外部环境有机结合。因此,清楚的确定公司的资源优势和缺陷,了解公司所面临的机会和挑战,对于制定公司未来的发展战略有着至关重要的意义。

    SWOT分析的步骤:

    1、罗列企业的优势和劣势,可能的机会与威胁。

    2、优势、劣势与机会、威胁相组合,形成SO、ST、WO、WT策略。

    3、对SO、ST、WO、WT策略进行甄别和选择,确定企业目前应该采取的具体战略与策略。

    92525661238b6ee1bc8447f19c704f36.png

    金字塔原理之方法提取与总结 .pdf

    金字塔原理所涵盖的思想、方法不仅仅有助于日常写作能力提升,而且可以提高逻辑思维能力。金字塔原理处处在讲述着“思考、写作和解决问题的逻辑”。

    8e3ea9b69827e1aaf30c17df83d29f61.png

    PEST分析模型(PEST Analysis) .doc

    PEST分析是指宏观环境的 分析,宏观环境又称一般环境,是指影响一切行业和企业的各种宏观力量。对宏观环境因素作分析,不同行业和企业根据自身特点和经营需要,分析的具体内容会有 差异,但一般都应对政治(Political)、经济(Economic)、技术(Technological)和社会(Social)这四大类影响企业 的主要外部环境因素进行分析。简单而言,称之为PEST分析法。

    5f27bb9dcb819eecde88674f9f80a919.png

    营销学上的三大经典营销策略组合理论--4P、4C、4R理论 .doc

    4C理论,即顾客(Consumer)、成本(Cost)、便利(convenience)和沟通(Communication)。4C理论认为,对现代企业来讲,重视顾客要甚于重视产品;追求成本要优于追求价格;提供消费者的便利比营销渠道更重要;强调沟通而不仅仅是促销。因此,企业必须从消费者的角度出发,为消费者提供满意的产品和服务,才能在竞争中立于不败之地。

    6ec5fab40876d1215c8087ab2fd3452c.png

    个人绩效与时间管理 .ppt

    著名管理学家科维提出了一个时间管理的理论,把工作按照重要和紧急两个不同的程度进行了划分,基本上可以分为四个“象限”:既紧急又重要、重要但不紧急、紧急但不重要、既不紧急也不重要。这就是关于时间管理的“四象限法则”。

    6f7b8a6e63134cec094f1ffcdeea284b.png

    5W1H法和6W2H .pdf

    6W2H方法也叫八何分析法、6W2H标准化决策,常常被运用到企业战略的决策和制定计划以及对工作的规划与分析,它能帮我们提高效率,使工作有效地执行,6W2H的含义主要是:

    What:工作的内容和达成的目标;

    Why:做这项工作的原因;

    Who:参加这项工作的具体人员,以及负责人;

    When:在什么时间、什么时间段进行工作;

    Where:工作发生的地点 ;

    Which:哪一种方法或途径;

    How:用什么方法进行;

    How much:需要多少成本?

    8f963738a94e285d8efc6f8c0fd5f52f.png

    应用最广泛的营销分析工具之一:安索夫矩阵 .pdf

    安索夫区别出4种产品/市场组合和相对应的营销策略,即市场渗透战略—现有产品和现有市场的组合,产品开发战略-现有市场与未来产品的组合,市场开发战略-现有产品与未来市场的组合,多角化战略—未来产品与未来市场的组合。

    c41aa365289b0f745abf593685d7768c.png

    完整专题,点击查看→提高思维能力的工具

    展开全文
  • 分支界限与回溯法对比: 1. 求解目标不同:回溯可以用于求解目标是找出解空间树中满足约束条件的所有解,而分支界限求解的目标通常是找出一个满足约束条件的解,或者最优解。 2. 搜索方式不同:回溯主要以...

    分支界限法

    简单概述

    分支界限法类似与回溯法,也是在问题解空间中搜索问题解的一种算法。
    分支界限法与回溯法对比
    1. 求解目标不同:回溯法可以用于求解目标是找出解空间树中满足约束条件的所有解,而分支界限法求解的目标通常是找出一个满足约束条件的解,或者最优解
    2. 搜索方式不同:回溯法主要以深度优先的方式搜索解空间树,而分支界限法则主要以广度优先或者函数优先的方式搜索解空间树。

    基本思想

    在分支界限法中,每个活结点只有一次机会成为扩展节点,一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或者导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点中。
    此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活节点列表为空时为止。
    代码框架:

    Q = {q0};//存储所有的活结点,初始化为根节点
    void Branch&Bound ()
    {
    	while (Q!=) {
    		select a node q from Q;//从Q选择一个结点
    		Branch(q, Q1); //对q进行分支,产生Q1,分支时利用约束和界进行剪枝
    		add (Q1, Q);// 将新产生的活结点加入Q
            }
    }
    

    常见的两种分支搜索法

    队列式(FIFO)搜索法:按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。

    优先队列式搜索法:按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。

    最大堆(最大优先队列):最大效益优先
    最小堆(最小优先队列):最小耗费优先

    经典问题案例

    01背包问题

    问题描述

    有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品。

    例:编号分别为a,b,c,d,e的五件物品,它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,每件物品数量只有一个,现在给你个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?

    解题思路

    问题的关键在于解空间树的界的设计,好的界限函数可以大大提高算法的效率。01背包问题是求解在限定条件下的极大值,所以上界函数的设计很重要,因为我们可以根据计算出来的上界值和之前算出的下界做比较,如果当前的上界比下界还要小,那么就可以剪枝,减少计算量。
    01背包问题的上界函数可以使用这种方法,我们先删除比背包剩余容量还要大的物品(因为不可能放得下),然后按照贪心算法的方式:分别计算出每个物品的价值比(价值/重量),价值比大的就先装。因为是计算上界,我们不用考虑装不下的问题,如果装不下,就拆分,按照比例装入背包。下界函数的设计和上界函数的思路差不多,但是由于是下界,所以我们要考虑装不下的情况,如果装不下,那就不装,换成下一个价值比大的物品继续装。
    构造解空间树的过程如下:
    解空间树

    代码实现

    package branch;
    
    import java.util.*;
    
    public class Package01 {
    
        private int maxValue = Integer.MIN_VALUE;
        private static   LinkedList<Node> heap = new LinkedList<Node>();//创建一个指针链表
    
        public int getMaxValue() {
            return maxValue;
        }
    
        public void setMaxValue(int maxValue) {
            this.maxValue = maxValue;
        }
    
        public static class Node implements Comparable{
            double ub; //价值上界
            int lb; //价值下界
            int level; //所在层数
            Node parent; //父节点
            int cValue; //当前价值
            int restPWeight; //剩余背包容量
            public Node(double ub,int lb,int level,Node node,int cValue,int restPWeight){
                this.ub = ub;
                this.lb = lb;
                this.level = level;
                this.parent = node;
                this.cValue = cValue;
                this.restPWeight = restPWeight;
            }
    
            @Override
            public int compareTo(Object o) {
                double compareUb = ((Node)o).ub;
                if(ub < compareUb) return 1;
                if(ub == compareUb) return 0;
                return -1;
            }
            public boolean equals(Object x){
                return ub==((Node)x).ub;
            }
        }
    
    
            /**
         * 用贪心法算出最优解的下界lb
         * @param weight 对应物品重量
         * @param value 对应物品的价值
         * @param pWeight 背包重量
         * @return 返回求出的下界
         */
        private static int computeLb(int[] weight, int[] value, int pWeight){
            int lb = 0;
            Map<Integer,Integer> omap = new HashMap<>();
            Map<Integer,Integer> map = new TreeMap<>(new Comparator<Integer>() {
                public int compare(Integer obj1, Integer obj2) {
                    // 降序排序
                    return obj2.compareTo(obj1);
                }
            });//按照key对map进行排序
            for(int i = 1;i <= weight.length;i++){
                omap.put((value[i-1]/weight[i-1]),i);
            }
            map.putAll(omap);
            //遍历map,得到排好序的物品编号顺序
            for(Map.Entry<Integer,Integer> entry: map.entrySet()){
                int number = entry.getValue();
                //判断物品是否能被装下
                if(weight[number - 1] > pWeight) continue;
                pWeight = pWeight - weight[number - 1];
                lb = lb + value[number - 1];
            }
            return lb;
        }
    
        /**
         * 用贪心法算出最优解的上界ub
         * @param weight 对应物品重量
         * @param value 对应物品的价值
         * @param pWeight 背包重量
         * @return 返回求出的上界
         */
        private static double computeUb(int[] weight,int[] value,int pWeight){
            double ub = 0;
            int cpweight = pWeight; //当前背包容量
            Map<Integer,Integer> omap = new HashMap<>();
            Map<Integer,Integer> map = new TreeMap<>(new Comparator<Integer>() {
                public int compare(Integer obj1, Integer obj2) {
                    // 降序排序
                    return obj2.compareTo(obj1);
                }
            });//按照key对map进行排序
            for(int i = 1;i <= weight.length;i++){
                omap.put((value[i-1]/weight[i-1]),i);
            }
            map.putAll(omap);
    //        System.out.println(map);
            //遍历map,得到排好序的物品编号顺序
            for(Map.Entry<Integer,Integer> entry: map.entrySet()){
                int number = entry.getValue();
                if(weight[number - 1] > pWeight)continue;
                if(weight[number - 1] > cpweight){
                    ub = ub + cpweight * entry.getKey();
                    return ub;
                }else {
                    cpweight = cpweight - weight[number - 1];
                    ub = ub + value[number - 1];
                }
            }
            return ub;
        }
    
        public static void main(String[] args) {
        	//代码的排序过程待优化
            int[] weight = {4,7,5,3,2,1}; //物品重量
            int[] value = {40,42,25,12,6,2}; //物品价值
            int maxLevel = weight.length;
            int pWeight = 10; //背包重量
            int[] result = new int[maxLevel]; //用来存储结果
            int maxValue = 0; //存储方案最大价值
            int lb = computeLb(weight,value,pWeight);//计算出下界
            double ub = computeUb(weight,value,pWeight);//计算出上界
            System.out.println(lb+" "+ub);
            int level = 1;
            Node node = new Node(ub,lb,level,null,0,pWeight);
            //搜索子集空间树
            while (node!=null&&node.level<=maxLevel){
              //参考优先队列,不停的扩展结点,选取下一个结点
                    //选择装入
                if(node.restPWeight-weight[node.level - 1] >= 0) {
                    int[] cweight = Arrays.copyOfRange(weight, node.level, maxLevel);//去掉已经判断过的物品,下面同理
                    int[] cvalue = Arrays.copyOfRange(value, node.level, maxLevel);
                    double nodeub = node.cValue + value[node.level - 1] + computeUb(cweight, cvalue, node.restPWeight - weight[node.level - 1]); //算出当前上界
                    int nodelb = lb; //当前下界
                    int nodevalue = value[node.level - 1];//当前判断是否装入物品的价值
                    if (nodeub >= lb) {
                        //创建节点
                        Node childNode = new Node(nodeub, nodelb, node.level + 1, node, node.cValue + nodevalue, node.restPWeight - weight[node.level - 1]);
                        heap.add(childNode);
                        int cValue = node.cValue+value[node.level-1];
                        if(cValue > maxValue) maxValue = cValue;
                        result[node.level - 1] = 1;
                        Collections.sort(heap);
                    }
                }
                    //选择不装入
                    int[] cweight1 = Arrays.copyOfRange(weight,node.level,maxLevel);//去掉已经判断过的物品,下面同理
                    int[] cvalue1 = Arrays.copyOfRange(value,node.level,maxLevel);
                    double nodeub1 = node.cValue+computeUb(cweight1,cvalue1,node.restPWeight); //算出当前上界
                    int nodelb1 = lb; //当前下界
                    if(nodeub1>=lb){
                        //创建节点
                        Node childNode1 = new Node(nodeub1,nodelb1,node.level+1,node,node.cValue,node.restPWeight);
                        heap.add(childNode1);
                        int cValue = node.cValue;
                        if(cValue > maxValue) maxValue = cValue;
                        Collections.sort(heap);
                    }
                node = heap.poll();
            }
            System.out.println(maxValue);
            for(int i = 0;i<result.length;i++){
                System.out.print(result[i]+" ");
            }
        }
    }
    
    

    最大团问题

    问题概述


    举个例子:下图G中,子集{1,2}是G的大小为2的完全子图。这个完全子图不是团,因为它被G更大的完全子图{1,2,5}包含。{1,2,5}是G的最大团。{1,4,5}和{2,3,5}也是G的最大团。

    解题思路

    我们用分支界限法解决问题时,首先要构建问题的解空间数,从题意不难看出,问题是一个子集树,对于每个顶点,都有选或不选两种情况,所以是子集树,然后是上界函数和下界函数。这个问题的下界函数不容易求解,我们可以直接把当前最优解当作下界函数。

    上界函数:用变量cliqueSize表示与该结点相应的团的顶点数;level表示结点在子集空间树中所处的层次;用cliqueSize+n-level+1作为顶点数上界upperSize的值。
    在此优先队列式分支限界法中,upperSize实际上也是优先队列中元素的优先级。算法总是从活结点优先队列中抽取具有最大upperSize值的元素作为下一个扩展元素。

    算法思想:
    子集树的根结点是初始扩展结点,对于这个特殊的扩展结点,其cliqueSize的值为0。 算法在扩展内部结点时,首先考察其左儿子结点。在左儿子结点处,将顶点i加入到当前团中,并检查该顶点与当前团中其他顶点之间是否有边相连。当顶点i与当前团中所有顶点之间都有边相连,则相应的左儿子结点是可行结点,将它加入到子集树中并插入活结点优先队列,并判断是否可以更新最优解,否则就不是可行结点。

    接着继续考察当前扩展结点的右儿子结点。当upperSize > bestn时,右子树中可能含有最优解,此时将右儿子结点加入到子集树中并插入到活结点优先队列中。不断从优先队列中选取活节点,并按照上面的方式(先左子树,后右子树)扩展节点,直到满足终止条件。

    终止条件
    算法的while循环的终止条件是遇到子集树中的一个叶结点(即n+1层结点)成为当前扩展结点。
    对于子集树中的叶结点,有upperSize=cliqueSize。此时活结点优先队列中剩余结点的upperSize值均不超过当前扩展结点的upperSize值,从而进一步搜索不可能得到更大的团,此时算法已找到一个最优解。

    代码实现

    package branch;
    
    
    import java.util.Collections;
    import java.util.LinkedList;
    import java.util.Vector;
    
    import static java.lang.Integer.max;
    
    /**
     * Created by zhangyun on 2019/12/17
     * 最大团问题
     */
    public class MaxClique {
    
        private LinkedList<Node> heap = new LinkedList<Node>();//创建一个指针链表
    
        /**
         * 树节点的结构体
         */
        public  class Node implements Comparable{
            double cliqueSize; //价值上界
            int level; //所在层数
            Vector<Integer> selectedNode = new Vector<>(); //存储已选节点
            public Node(double cliqueSize,int level,Vector<Integer> nodes){
                this.selectedNode.addAll(nodes);
                this.cliqueSize = cliqueSize;
                this.level = level;
            }
    
            /**
             * 重写比较器,ub大的先出栈
             */
            @Override
            public int compareTo(Object o) {
                double compareUb = ((Node)o).cliqueSize;
                if(cliqueSize< compareUb) return 1;
                if(cliqueSize == compareUb) return 0;
                return -1;
            }
            public boolean equals(Object x){
                return cliqueSize==((Node)x).cliqueSize;
            }
        }
    
        /**
         *
         * @param nodeIndex 每个节点的与其他节点是否有边,有边为1,无边为0,根节点全部初始化为0
         * @param n 节点总数
         * @return
         */
        public int maxClique(int[][] nodeIndex,int n){
            int bestNum = 0; //最优解
            int cliqueSize = 0; //cliqueSize = cliqueSize + n - level + 1顶点数上界upperSize的值
            int level = 0; //层级从0开始,此时团内无节点
            int upperSize = cliqueSize + n - level; // 上界
            Vector<Integer> selectedNode = new Vector<>();
    //        int[] nodes = new int[n + 1]; //存储顶点
    //        //写入顶点{0,1,2,3,...,n},0表示根节点,实际不存在,为了使节点与level对应
    //        for(int i = 0;i <= n;i++){
    //            nodes[i] = i ;
    //        }
            Node node = new Node(cliqueSize,level,selectedNode); //初始化根节点,下标为0
            while(node.level < n - 1){
                if(node.level + 1 == n - 1) return node.selectedNode.size();
                //扩展左子树
                if(ifEdge(nodeIndex,node.level + 1,node.selectedNode)){
                    Vector<Integer> childSelectedNode = new Vector<>();
                    childSelectedNode.addAll(node.selectedNode);
                    childSelectedNode.add(level + 1);
                    int upper = node.selectedNode.size() + n - node.level; //计算上界
                    Node leftChild = new Node(upper,node.level + 1,childSelectedNode);
                    heap.add(leftChild);
                    Collections.sort(heap);
                }
                //扩展右子树,因为不加节点,不用判断是否右边,但是要比较上界和最优解的大小
                //如果当前上界大于最优解的话,说明可能有最优解在子树中,加入队列
                if(node.selectedNode.size() + n - node.level >= bestNum){
                    Vector<Integer> childSelectedNode = new Vector<>();
                    childSelectedNode.addAll(node.selectedNode);
                    int upper = node.selectedNode.size() + n - node.level - 1; //计算上界
                    Node rightChild = new Node(upper,node.level + 1, childSelectedNode);
                    heap.add(rightChild);
                    Collections.sort(heap);
                }
                node = heap.poll();
                bestNum = max(bestNum,node.selectedNode.size()); // 加入节点后更新最优解
            }
            return 0;
        }
    
        /**
         * 判断要加入节点和其他节点是否右边
         * @param nodeIndex 每个节点的与其他节点是否有边,有边为1,无边为0,根节点全部初始化为0
         * @param level 要加入节点的层级
         * @param selectedNode 已加入节点的层级
         * @return
         */
        public boolean ifEdge(int[][] nodeIndex,int level,Vector<Integer> selectedNode){
            for(int i = 0;i < selectedNode.size();i++){
                if(nodeIndex[selectedNode.get(i)][level] == 0)
                    return false;
            }
            return true;
        }
    }
    
    

    测试类:

    public class TestMaxClique {
        public static void main(String[] args) {
            int[][] nodes = {{0,0,0,0,0,0},
                             {0,0,1,0,1,1},
                             {0,1,0,1,0,1},
                             {0,0,1,0,0,1},
                             {0,1,0,0,0,1},
                             {0,1,1,1,1,0}};
            int n = nodes.length;
            MaxClique maxClique = new MaxClique();
            int num = maxClique.maxClique(nodes,n);
            System.out.println("最大团的顶点数为:" + num);
        }
    }
    

    测试结果:

    展开全文
  • 体育管理课程应用案例教学法的研究,崔俊铭,林源章,运用比较分析法和文献资料法对案例教学法在体育管理课程的应用进行了分析,对比国外的大学教学方法和其他管理学科的教学情况,揭
  • 论文研究-目标导向序依赖层次分析法....基于案例应用的对比分析表明:在输入信息可比的条件下,目标导向序依赖层次分析法相对于TOYLC层次分析法具有更高的方案评价区分度,从而验证了前者相对于后者的相对科学合理性.
  • 石油天然气中含有酸性成分,会对管道和各种金属造成腐蚀,因此天然气脱硫是天然气处理中的重要组成部分,本文论述了天然气脱硫的发展现状及趋势,而固体...通过对比研究,选用天然气的固体吸附,进行了脱硫装置工艺设计。
  • Excel数据分析与图表应用案例精粹_光盘 杨广于 清华大学出版社,2012 目录 第1章 公式与函数基本操作 1  1.1 Excel公式的基本操作 1  1.1.1 公式的输入与编辑 1 ... 21.4 两支股票对比分析 431
  • 1、逻辑树分析方法含义:复杂问题拆解为若干子问题费米问题经典案例:芝加哥有多少调音师?用费米估计算了一下每次游泳大概会喝多少尿。作者链接:...

    1、逻辑树分析方法

    含义:复杂问题拆解为若干子问题

    97c9fb58e97b40577803f1c8ee1ac884.png

    费米问题经典案例:芝加哥有多少调音师?

    edfafa4f96920da282de109e83c44220.png

    用费米估计法算了一下每次游泳大概会喝多少尿。

    84fac9c3dd8a8317353cc66401ab6af8.png

    作者链接:https://www.zhihu.com/question/21997407/answer/282562952


    2.PEST分析方法

    作用:行业分析

    aa3847072c7c16cd9775e316ec209689.png

    行业分析报告:

    艾瑞网:

    艾瑞网_互联网数据资讯聚合平台www.iresearch.cn
    086f75c02eff3234174f452e5fd38704.png

    Talkingdata:

    数据报告-移动观象台-TalkingDatami.talkingdata.com

    199IT互联网数据中心

    互联网数据资讯网-199IT | 发现数据的价值-199IT | 中文互联网数据研究资讯中心-199ITwww.199it.com
    620fd8834959c9285b4f273b1aeab48f.png

    DataEye

    https://www.dataeye.com/reportwww.dataeye.com

    3.多维度拆解问题

    含义:问题=维度1+维度2+维度3

    7e45425290773ded27dfcfd1374fb63e.png

    案例:某个店铺推广效果如何?

    从指标构成拆解

    b4962648d9dfc8f7cfeff2d5e8a5c6a9.png

    从业务流程拆解

    2bd72367a061f5ebfb8b1bbf485b4a3e.png

    辛普森悖论:

    案例:1973年加利福尼亚大学伯克利分校性别歧视案


    4.对比分析法

    数据分析的最终目的是对现实的情况或一个功能的好坏做评估,这里最常用的方法就是对比分析法,俗话说的好:没有对比就没有伤害。案例:价格锚定什么是同比、环比?
    同比是与当前时间范围上层时间范围的前一范围中同样位置数据对比。周同比:如果是周同比,咱们最好选择周几,这样会排除因为周末或其他原因产生的影响,比如咱们选择本周的周一与上周的周一进行对比。月同比:如果是月同比,咱们就可以把上个月的目标和这个月的目标每一天的进行校准。年同比:年同比就是拿这一年和上一年进行同比,但是要去除掉季节、节假日的影响。
    环比是与当前时间范围相邻的上一个时间范围对比,环比适用于根据相邻时间范围的数字对当前时间范围的指标进行设定。比如给我们的产品设定每月新增用户为100000,但是第一月我们只做到10000,第二个月只做到12000,那我们就需要跟据前面两月的实际情况进行对比,调整第三个月及之后的目标了。

    万能对比表格:

    08b8db621a2164f4dee5b476762ea9ad.png

    5.假设检验分析法

    14beb77b837235b0983e1448d8365d11.png

    4p营销理论:

    76ba79e2f934b7c31c7f2bb0970df6d1.png

    从业务流程提出假设:

    96dc4811f28bc5663cefbe676549a67a.png

    假设检验分析法套用模板:

    71b4d765850236311151a16feedfd30d.png

    展开全文
  • 原标题:SPSS统计分析案例:数据标准化数据标准化处理是 数据挖掘 的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化...
  • 为验证该软件在众多工程领域的适用性,进行了地热开发钻孔破裂、岩石力学双轴压缩试验、水压致裂等三个模拟案例对比分析。通过对模拟试验结果与室内试验或现场观测结果的对比发现,FRACOD不仅可以准确模拟岩石的裂纹...
  • 枚举 备忘录 最优规划对比

    千次阅读 2013-01-01 12:14:44
    可以参考案例 北大ACM1163 - The Triangle (枚举&备忘录&动态规划) http://blog.csdn.net/gykimo/article/details/8457011  1.1.1 什么是自顶向下和自底向上 自顶向下是我要达到什么目标,然后分析...
  • 具有群体智能,全局寻优等优势,比较适合于函数寻优问题,本案例研究了基于粒子群算法的函数寻优算法。 14 基于粒子群算法的PID控制优化算法(史峰) PID控制方法是工业领域中最常用的控制方法,然而在PID控制...
  • 为什么一般把参与项目和不参与项目进行对比时会出现选择偏误?其次,搞清楚上面的原理之后,PSM真正难的是找到合适的协变量和完成两个苛刻的检验(共同支撑检验和平衡性检验)这篇文章我想达到哪些学习目标:(1)尽量...
  • 大数据时代的经营分析与专题分析;这是什么;目录;大数据时代的分析思想变革;...对比分析法了解企业经营发展状况;排排位次;线上线下购物的体验差别;虚拟运营商的资费;环比/同比/定基比;新增与流失的数据案例
  • 采用实地调查和案例对比,对步行商业街的业态构建了竞争力评价的指标体系,并首次在商业街研究领域中采用了信息熵权TOPSIS(逼近理想解排序),对两者业态的竞争力、空间布局进行了比较分析。研究发现:(1)四种...
  • 一家销售公司业绩没有起色,对它进行分析总结数据分析思维技巧象限法多维法假设法案例指数法案例思考二八法对比法例子漏斗法如何在业务时间锻炼数据分析思维好奇心为什么啤酒与尿布是错的? 为什么思维很重要 What:...
  • 为什么一般把参与项目和不参与项目进行对比时会出现选择偏误?其次,搞清楚上面的原理之后,PSM真正难的是找到合适的协变量和完成两个苛刻的检验(共同支撑检验和平衡性检验)这篇文章我想达到哪些学习目标:(1)...
  • 对比法 漏斗 3.数据分析思维锻炼方法 好奇心! 案例分析 啤酒与尿布 去思考生活中商业案例的表现,背后的原理、摆放方法和数据差异 生活中的练习 例如夜市,一天的人流量?一人的流量?营业额?数据的分析方式? ...
  • 百日计划第一周总结 计划 1.彻底结束之前预定暑假完成的天善学院课程《七周数据分析师》 ...对比法 漏斗 3.数据分析思维锻炼方法 好奇心! 案例分析 啤酒与尿布 去思考生活中商业案例的表现,背后的原理、摆放
  • 该模型是基于移除分辨系数的灰关联分析, 案例是评价台湾地区 路面管理系统的最佳化优选问题. 应用德菲搜集的案例数据显示了省道和县、乡道主管部门对软件的认知差异和 需求偏好. 采用理想解趋近(TO ...
  • 应用改进可拓层次分析法进行煤层顶板稳定性评价,以榆林至西安输气管道工程压覆渭北某煤矿为例,进行了煤层顶板稳定性评价。将影响煤层顶板稳定性要素分为4大因素、8个因子,稳定性级别划分为非常稳定、稳定、基本稳定...
  • 提高结晶盐的资源化效率,降低综合处理成本,首先介绍了高盐废水分盐结晶工艺各种典型技术路线,再结合特定煤化工案例,讨论了2种代表性的热和膜法技术路线的分盐结晶工艺设计,并对其进行了定量的技术经济对比分析。...
  • 本文通过对互联网消费信贷理论与互联网消费信贷监管理论的运用,采用理论与实际相结合法,案例分析法对比法首先介绍了消费信贷的内涵,服务主体及其发展,强调了互联网科技对消费金融发展的影响。然后通过SWOT模型...
  • 在上一节,我们自定义实现了PCA主成分分析法,并通过多个测试验证了算法的有效性,当然与scikit-learn或其他机器学习框架封装的PCA算法相比差的很远,但也足以让我们理解PCA的原理。 在这一节,我们就
  • 论文研究-基于二水平误差控制的序贯分支筛选... 蒙特卡罗仿真的对比分析以及基于实际背景的仿真案例应用,验证了在保证统计推断效力的条件下,所提方法能明显降低SB所需的仿真次数,并成功处理包含定性因子的仿真模型.
  • 《数据结构课程设计案例精编(用C/C++描述)》

    千次下载 热门讨论 2008-10-08 10:33:11
    3 GP与OOP的对比 4. 3 泛型程序设计与STL 4. 3. 1 STL库的设计:容器. 算法与迭代器 4. 3. 2 A umulate函数示例 4. 4 概念与模型 4. 4. 1 必要条件集合 4. 4. 2 示例:迭代器 4. 5 关联类型与特性类 4. 5. ...
  • 根据现有广泛应用于易燃易爆危险化学物品的消防安全评估方法—道化学火灾、爆炸指数(第七版),以咸阳市某原油储备库原油储罐为案例,结合原油的潜在能量和现行实施的消防安全设施,对其储罐火灾、爆炸危险性进行半...
  • 前言:日常需要在一个有序序列里面是否包含目标值的时候需要一一遍历序列,然后进行对比,这种算法称之为简单查找。简单查找的特点是:每次只查找并且排除一个数。 现在我们提供一种更好的算法,如猜数字,告诉你...

空空如也

空空如也

1 2 3 4 5
收藏数 100
精华内容 40
关键字:

对比分析法案例