精华内容
下载资源
问答
  • 2021-04-08 14:53:23

    题目:设计一个算法,求出指定节点在给定二叉排序树中的层次
        分析:
            我们可以根据二叉排序树的性质,从根节点一直向下查找,每查找一次,层次便加一

    typedef struct node {
    	int data;
    	node *left, *right;
    }Tree;
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    
    Tree *create(Tree *T) {//先序创建一颗二叉树
    	int data;
    	printf("请输入当前节点值:data=");
    	scanf("%d", &data);
    	getchar();
    	if (data != -1) {
    		T = (Tree *)malloc(sizeof(Tree));
    		T->data = data;
    		T->left = NULL;
    		T->right = NULL;
    		T->left = create(T->left);
    		T->right = create(T->right);
    	}
    	return T;
    }
    int findLevel(Tree *T, int p) {
    	static int depth = 1;
    	if (T) {
    		if (T->data < p) {
    			findLevel(T->right, p);
    			depth++;
    		}
    		else if(T->data > p){
    			findLevel(T->left, p);
    			depth++;
    		}
    	}
    	return depth;
    }
    int main() {
    	//创建一颗二叉排序树
    	Tree *T = (Tree *)malloc(sizeof(Tree *));
    	T = create(T);
    	int p = 9,depth;//手动指定节点值
    	depth = findLevel(T,p);
    	printf("该节点所在的层次为第%d层",depth);
    	return 0;
    }

      要想赢,就一定不能怕输。不怕输,结果未必能赢。但是怕输,结果则一定是输。

    更多相关内容
  • 论文研究-多人层次单排序下权重向量的算法.pdf,
  • 基本过程是:对所分析的问题建立层次模型,然后将一个层次的各因素相对于上一层次的各准则(或目标)进行两两比较判断,构造判断矩阵,通过对判断矩阵的计算,进行层次单排序和一致性检验,最后进行层次总排序,得
  • 通过将决策问题按目标层、准则层方案层等分解为不同的层次结构,然后求得每一层次各元素对上一层次某元素的优先权重,再用加权的方法归并各参评方案对目标的最终权重,从而完成产品的综合排序任务。...
  • 一致性分析对照表 基本信息 学 科 语文 年 级 六年级 教 师 吴朝华 教材版本 人教版 课标要点 题型 题号 题目 分值 难易度 了解有较强的独立识字能力累计认识常用汉字3000个其中2500个左右会写 读拼音写词语 一 读...
  • ![图片说明](https://img-ask.csdn.net/upload/201708/26/1503755196_260855.jpg) (2)中按行求和是什么意思?
  • 针对专家作两两比较时的判断有不同可信度的情形,... 接着利用可信度对近似排序向量集结, 得到含有专家判断可信度的最终排序向量; 最后, 通过实例表明了该方法对不一致判断矩阵的有效性及其在实际决策中的可行性.</p>
  • 针对进行输电网规划时难以量化各指标主观权重与客观权重的问题,提出了一种将改进层次分析法、基于指标相关性的指标权重确定(CRITIC)法逼近理想解排序法(TOPSIS)相结合的输电网规划方案评价方法。该方法首先分别...
  • 通过"标度变换"把不具"可加性"的比例标度转化为评分标度,利用评分标度的"可加性"可计算比较对象的得分、并按得分率对比较对象排序。与已有准则排序方法的实质性区别是,勿需进行一致性检验。
  • React可排序树 一个用于对分层数据进行拖放式可排序表示的React组件。 查看,以演示一些基本功能高级功能。 目录 入门 使用npm安装react-sortable-tree 。 # NPM npm install react-sortable-tree --save # YARN...
  • 具体计算如下 Step1 构造判断矩阵计算主指标层M中8个元素对于目标的权重向量 次指标层N中20个元素对于M层的第j个元素的单排序权重 其中不受j支配的元素权重为0.令 Step 2 N层对于目标的排序为从大到小排序则排名...
  • JS中多层次排序算法的实现代码.docx
  • 数学建模:层次分析法实例以及代码

    万次阅读 多人点赞 2020-11-22 22:06:09
    层次单排序(计算权向量)与检验(一致性检验)计算权向量一致性检验5.层次总排序(组合权向量)与检验(一致性检验)6.结果分析7.层次分析法的优缺点层次分析法的代码实现(matlab) 层次分析法的思想 层次分析法的...

    博主联系方式:
    QQ:1540984562
    微信:wxid_nz49532kbh9u22
    QQ交流群:750313950(嵌入式方向)
    QQ交流群:856398158(后端方向)

    层次分析法的思想

    层次分析法的思想:将所有要分析的问题层次化
    根据问题的性质和所要到达的总目标,将问题分为不同的组成因素,并按照这些因素间的关联影响即其隶属关系,将因素按不同层次聚集组合,形成一个多层次分析结构模型
    最后,对问题进行优劣比较排序.

    层次分析法步骤

    1、找准各因素之间的隶属度关系,建立递阶层次结构
    2、构造判断矩阵,并赋值
    3、层次单排序(计算权向量)与检验(一致性检验)
    4、层次总排序(组合权向量)与检验(一致性检验)
    5、结果分析

    具体案例(市政工程项目建设决策)

    1.问题提出

    市政部门管理人员需要对修建一项市政工程项目进行决策,可选择的方案是修建通往旅游区的高速路(简称建高速路)或修建城区地铁(简称建地铁)。除了考虑经济效益外,还要考虑社会效益环境效益等因素,即是多准则决策问题,考虑运用层次分析法解决。

    2.建立递阶层次结构

    1、明确决策目标:“合理建设市政工程,使综合效益最高”。

    2、为了实现这一目标,需要考虑的主要准则有三个,即经济效益社会效益环境效益
    还必须考虑直接经济效益间接经济效益方便日常出行方便假日出行减少环境污染改善城市面貌等因素(准则),从相互关系上分析,这些因素隶属于主要准则,因此放在下一层次考虑,并且分属于不同准则。

    3、解决方案,即建高速路或建地铁,这两个因素作为措施层元素放在递阶层次结构的最下层。

    这样递阶层次就形成了:
    在这里插入图片描述

    3.构造判断矩阵(成对比较阵)并赋值

    1、构造判断矩阵的方法:
    每一个具有向下隶属关系的元素(被称作准则)作为判断矩阵的第一个元素(位于左上角),隶属于它的各个元素依次排列在其后的第一行第一列
    如下图所示:
    在这里插入图片描述
    2、如何对判断矩阵进行赋值:
    向填写人(专家)反复询问:针对判断矩阵的准则,其中两个元素两两比较哪个重要,重要多少,对重要性程度按1-9赋值。
    (可以类比模糊PID中的隶属程度,都是人为设定的,也是被人诟病的一个地方)
    在这里插入图片描述
    设填写后的判断矩阵为A=(aij)n×n,判断矩阵具有如下性质:

    (1) aij>0
    (2) aji=1/ aji
    (3) aii=1

    判断矩阵具有对称性,因此在填写时,通常先填写aii=1部分,然后再仅需判断及填写上三角形或下三角形的n(n-1)/2个元素就可以了。
    在特殊情况下,判断矩阵可以具有传递性,即满足等式:aij*ajk=aik .
    当上式对判断矩阵所有元素都成立时,则称该判断矩阵为一致性矩阵。
    对于上述的例子,可以构造出下面的判断矩阵:
    在这里插入图片描述

    4.层次单排序(计算权向量)与检验(一致性检验)

    计算权向量

    对于专家填写后的判断矩阵,利用一定数学方法进行层次排序。
    层次单排序是指每一个判断矩阵各因素针对其准则的相对权重,所以本质上是计算权向量。
    这里简要介绍和法:
    对于一致性判断矩阵,每一列归一化后就是相应的权重。
    对于非一致性判断矩阵,每一列归一化后近似其相应的权重,在对这n个列向量求取算术平均值作为最后的权重。

    公式: 在这里插入图片描述
    在层层排序中,要对判断矩阵进行一致性检验。判断矩阵可以具有传递性和一致性。一般情况下,并不要求判断矩阵严格满足这一性质。

    但从人类认识规律看,一个正确的判断矩阵重要性排序是有一定逻辑规律的,例如若A比B重要,B又比C重要,则从逻辑上讲,A应该比C明显重要,若两两比较时出现A比C重要的结果,则该判断矩阵违反了一致性准则,在逻辑上是不合理的。

    因此在实际中要求判断矩阵满足大体上的一致性,需进行一致性检验。只有通过检验,才能说明判断矩阵在逻辑上是合理的,才能继续对结果进行分析。

    一致性检验

    第一步,计算一致性指标CI
    在这里插入图片描述
    第二步,查表确定相应的平均随机一致性指标RI
    据判断矩阵不同阶数查下表,得到平均随机一致性指标RI:
    在这里插入图片描述
    第三步,计算一致性比例CR并进行判断:
    在这里插入图片描述
    当C.R.<0.1时,认为判断矩阵的一致性是可以接受的,C.R.>0.1时,认为判断矩阵不符合一致性要求,需要对该判断矩阵进行重新修正。

    图1
    图2
    可以看出,所有单排序的C.R.<0.1,认为每个判断矩阵的一致性都是可以接受的。

    5.层次总排序(组合权向量)与检验(一致性检验)

    总排序是指每一个判断矩阵各因素针对目标层(最上层)的相对权重。这一权重的计算采用从上而下的方法,逐层合成。
    文字性描述公式如下:
    在这里插入图片描述

    计算过程如下,更好理解过程:
    P(C1/A) = P(C1/B1) * P(B1/A) = 0.5 * 0.1429 = 0.07145
    CR(C1/A) = CR(C/B) * CR(B/A) = 0 * 0 = 0
    P(D1/A) = P(D1/C1) * P(C1/B1) * P(B1/A)
    + P(D1/C2) * P(C2/B1) * P(B1/A)
    + P(D1/C3) * P(C3/B2) * P(B2/A)
    + P(D1/C4) * P(C4/B2) * P(B2/A)
    + P(D1/C5) * P(C5/B3) * P(B3/A)
    + P(D1/C6) * P(C6/B3) * P(B3/A)
    =0.8333 * 0.5 * 0.1429
    +0.75 * 0.5 * 0.1429
    +0.1667 * 0.75 * 0.4286
    +0.8750 * 0.25 * 0.4286
    +0.1667 * 0.75 * 0.4286
    +0.8333 * 0.25 * 0.4286

    在这里插入图片描述

    6.结果分析

    从方案层总排序的结果看,建地铁(D2)的权重(0.6592)远远大于建高速路(D1)的权重(0.3408),因此,最终的决策方案是建地铁。
    根据层次排序过程分析决策思路:

    1、对于准则层B的3个因子,直接经济效益(B1)的权重最低(0.1429),社会效益(B2)和环境效益(B3)的权重都比较高(皆为0.4286),说明在决策中比较看重社会效益和环境效益
    2、对于不看重的经济效益,其影响的两个因子直接经济效益(C1)、间接带动效益(C2)单排序权重都是建高速路远远大于建地铁,对于比较看重的社会效益和环境效益,其影响的四个因子中有三个因子的单排序权重都是建地铁远远大于建高速路,由此可以推出,建地铁方案由于社会效益和环境效益较为突出,权重也会相对突出
    3、从准则层C总排序结果也可以看出,方便日常出行(C3)、减少环境污染(C5)是权重值较大的,而如果单独考虑这两个因素,方案排序都是建地铁远远大于建高速路。

    由此我们可以分析出决策思路:
    即决策比较看重的是社会效益和环境效益,不太看重经济效益;(总结准则层B)
    因此对于具体因子,方便日常出行和减少环境污染成为主要考虑因素,对于这两个因素,都是建地铁方案更佳,(总结准则层C)由此,最终的方案选择建地铁也就顺理成章了。

    7.层次分析法的优缺点

    优点:
    (1)系统性:层次分析把研究对象作为一个系统,按照分解、比较判断、综合的思维方式进行决策,成为继机理分析、统计分析之后发展起来的系统分析的重要工具。
    (2)实用性:层次分析把定性和定量方法结合起来,能处理许多许多用传统的最优化技术无法着手的实际问题,应用范围很广。同时,这种方法将决策者和决策分析者相互沟通,决策者甚至可以直接应用它,这就增加了决策者的了解和掌握。
    (3)简洁性:具有中等文化程度的人即可了解层次分析的基本原理和掌握它的基本步骤,计算也非常简便,并且所得的结果简单明确,容易为决策者了解和掌握。

    缺点:囿旧:只能从原有方案中选优,不能生成新方案;粗略:它的比较、判断直到结果都是粗糙的,不适于精度要求很高的问题;主观:从建立层次结构模型到给出成对比较矩阵,人的主观因素的作用很大,这就使得决策结果可能难以为众人接受。当然,采取专家群体判断的办法是克服这个缺点的一种途径。

    层次分析法的代码实现(matlab)

    disp('请输入判断矩阵A(n阶)');
    A=input('A=');
    [n,n]=size(A);
    x=ones(n,100);
    y=ones(n,100);
    m=zeros(1,100);
    m(1)=max(x(:,1));
    y(:,1)=x(:,1);
    x(:,2)=A*y(:,1);
    m(2)=max(x(:,2));
    y(:,2)=x(:,2)/m(2);
    p=0.0001;i=2;k=abs(m(2)-m(1));
    while  k>p
      i=i+1;
      x(:,i)=A*y(:,i-1);
      m(i)=max(x(:,i));
      y(:,i)=x(:,i)/m(i);
      k=abs(m(i)-m(i-1));
    end
    a=sum(y(:,i));
    w=y(:,i)/a;
    t=m(i);
    disp(w);disp(t);
             %以下是一致性检验
    CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
    CR=CI/RI(n);
    if CR<0.10
        disp('此矩阵的一致性可以接受!');
        disp('CI=');disp(CI);
        disp('CR=');disp(CR);
    end
    

    使用示例:
    将上面代码保存名为test1,并在点运行的时候添加到路径;
    输入的A矩阵是要以向量的形式输入的;
    之后按下回车即可,可以看到和之前的第4步得到的结果是一样的。
    在这里插入图片描述
    通过不断的使用这个式子计算相应矩阵(准则层B到准则层C、准则层C到方案层D)的权向量,最后可以得到最终的结果。
    简单的修改上面的程序,传入参数为矩阵,免得每次都要打。

    function w= test1(A)
    % disp('请输入判断矩阵A(n阶)');
    % A=input('A=');
    [n,n]=size(A);
    x=ones(n,100);
    y=ones(n,100);
    m=zeros(1,100);
    m(1)=max(x(:,1));
    y(:,1)=x(:,1);
    x(:,2)=A*y(:,1);
    m(2)=max(x(:,2));
    y(:,2)=x(:,2)/m(2);
    p=0.0001;i=2;k=abs(m(2)-m(1));
    while  k>p
      i=i+1;
      x(:,i)=A*y(:,i-1);
      m(i)=max(x(:,i));
      y(:,i)=x(:,i)/m(i);
      k=abs(m(i)-m(i-1));
    end
    a=sum(y(:,i));
    w=y(:,i)/a;
    t=m(i);
    disp(w);disp(t);
             %以下是一致性检验
    CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];
    CR=CI/RI(n);
    if CR<0.10
        disp('此矩阵的一致性可以接受!');
        disp('CI=');disp(CI);
        disp('CR=');disp(CR);
    end
    

    输入:

    Array1=[1 1/3 1/3;3 1 1;3 1 1];
    Array2=[1 1;1 1];
    Array3=[1 3;1/3 1];
    Array4=[1 3;1/3 1];
    Array5=[1 5;1/5 1];
    Array6=[1 3;1/3 1];
    Array7=[1 1/5;5 1];
    Array8=[1 7;1/7 1];
    Array9=[1 1/5;5 1];
    Array10=[1 1/3;7 1];
    
    A=test1(Array1);
    B1=test1(Array2);
    B2=test1(Array3); 
    B3=test1(Array4);
    C1=test1(Array5);
    C2=test1(Array6);
    C3=test1(Array7);
    C4=test1(Array8);
    C5=test1(Array9);
    C6=test1(Array10);
    

    得到相应的矩阵:
    在这里插入图片描述

    展开全文
  • Spiky包括用于尖峰排序和光谱分析()的Chronux库,以及用于方便排序,数据可视化以及离散连续数据分析的其他功能。 特征 一键式自动尖峰排序 可视化验证工具 基本渠道运营商 每通道带通滤波 自定义数学运算符 ...
  • 针对传统排序算法计算耗时、实时性差的缺点,提出一种可并行的多层次归并排序算法并在FPGA中实现了其并行计算,同时分析了其周期精确的计算时间。结果表明该归并排序算法可以[O(N)]的时间复杂度完成特征点的排序,...
  • 提出了一个基于层次分类的搜索引擎页面排序算法。该算法通过对页面进行层次化分类进而计算贝面之间相关性,根据相关性的不同,对来自不同页面的外部链接赋予不同的权重,从而更公正、有效地计算页面的PageRank值。...
  • 主要介绍了C语言排序方法,包含10种排序,数据结构课程设计实例二叉树建立遍历冒泡排序快速排序_二叉排序树_二叉树层次遍历_二叉树非递归遍历_二叉树建立括号匹配直接插入选择代码大学生本科毕业设计期末作业排序...
  • 论文研究-层次分析法中排序权数的计算方法.pdf, 本文介绍层次分析法中对于完整及残缺评判矩阵排序权数的几种计算方法以及改进措施,并对多层次综合评判作了一些探讨分析。
  • Oracle SELECT语句中的START WITHCONNECT BY子句自动阻断一个层次。缺少这项特性,就需要一个复杂的自联接来确定行之间的逻辑联系。START WITH子句指定被认为是层次起点,或“根”的一行或几行,然后CONNECT BY ...
  • 层次灰色聚类决策对目标价值排序的应用.pdf
  • 基于灰色关联度的层次分析法排序算法
  • 通过引进2个参数,这一方法就能满足决策者对标度喜好分辨率的要求.由此得出3个重要的结论:方案的优先关系只与行元素乘积的几何平均值有关;得到的排序向量不是固定的而是一族排序向量;在同一准则下,方案权重之...
  • C语言中冒泡排序算法的分层次学习.pdf
  • 面向排序学习的层次聚类特征选择算法.pdf
  • openapi格式的CLI可以加载OpenAPI文件,通过按层次结构顺序对OpenAPI字段进行排序,并可以使用清晰的缩进将文件输出到JSON或YAML。 在订购旁边,CLI提供了其他选项,用于根据标志,标记,方法operationID来过滤...
  • 论文研究-计算层次分析法中排序权值的加速遗传算法.pdf, 为处理 AHP中判断矩阵的一致性问题 ,直接从判断矩阵的定义出发 ,提出用加速遗传算法同时计算 AHP中各要素的排序...
  • 对原有的最小偏差排序方法(LDM)作了进一步推广,并提出了一类广义最小偏差排序方法(GLDM),同时给出了其收敛性迭代算法仿真实例。理论分析仿真结果表明,应用GLDM对判断矩阵进行排序不但可行而且...
  • #资源达人分享计划#
  • 二叉排序树_层次遍历

    2013-05-17 19:40:40
    二叉排序树_层次遍历
  • 提出了一个多层网络节点重要性排序框架,其核心是每层提取多个指标,对指标和层次赋权叠加构成一个综合评价矩阵,在这个矩阵基础上进行排序。实验证明,该框架可以灵活适应不同的应用场景、不同指标集合。框架给出的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 159,669
精华内容 63,867
关键字:

层次单排序和层次总排序