1. 离散数学标号法求最短路径怎么求,书上写的看不懂,谁能用通俗的语言让我明白……举例子可以用下图。可以
做了很久的ppt,望采纳~~~~~~~~~~~~~~~~
2. 离散数学,主要学习哪些知识
离散数学是数学的几个分支的总称,以研究离散量的结构和相互间的关系为主要目标,其研究对象一般地是有限个或可数无穷个元素;因此它充分描述了计算机科学离散性的特点.内容包含:数理逻辑、集合论、代数结构、图论、组合学、数论等.《离散数学》课程简介 离散数学是计算机专业的一门重要基础课.它所研究的对象是离散数量关系和离散结构数学结构模型.由于数字电子计算机是一个离散结构,它只能处理离散的或离散化了的数量关系,因此,无论计算机科学本身,还是与计算机科学及其应用密切相关的现代科学研究领域,都面临着如何对离散结构建立相应的数学模型;又如何将已用连续数量关系建立起来的数学模型离散化,从而可由计算机加以处理.离散数学课程主要介绍离散数学的各个分支的基本概念、基本理论和基本方法.这些概念、理论以及方法大量地应用在数字电路、编译原理、数据结构、操作系统、数据库系统、算法的分析与设计、人工智能、计算机网络等专业课程中;同时,该课程所提供的训练十分有益于学生概括抽象能力、逻辑思维能力、归纳构造能力的提高,十分有益于学生严谨、完整、规范的科学态度的培养.
离散数学主要包括四个方面逻辑学集合论,代数结构,图论,直接用来解决一些实际的问题的,比较少,因为它是一门计算机专业的理论基础课,解决实际问题,你看哪些方面的问题了,
下面我举一些例子:
1 数据结构,这是计算机专业的一门重量级课程,而离散数学里里面的图论,就是数据结构里面图和树的理论基础!像一些经典的算法,在数据结构里会学到,其实,它们在图论里就被研究得很透!
2.关系数据库,不用说,它的理论基础----关系代数,就是离散数学的一个分支!
3.在计算机网络原理里面,有一些路由选择算法之类 的,像最短路径算法等,都是离散数学里图论的应用,都是一些经典的算法!
4.更深层次的,像人工智能等学科,都是以离散数学做为理论基础的,
所以,离散数学是计算机的一个理论基础,
至于你在编程中解决的问题,那应该是数据结构和算法的应用,因为这门课就是离散数学的理论,加上在计算机上的存储以及操作实现的~~
3. 最短路径 程序
上学期曾经编过
是 离散数学 的题目吧
想要的话你得等等
我现在五一放假在家
程序在学校的笔记本上呢
下周一回学校
到时可以给你找找
和你的要求完全吻合(大概是完全吻合吧)
你还是留个邮箱吧
实验三 计算两结点间长度为m的路的数目
一、实验目的
熟悉邻接矩阵和两结点间长度为m的路的数目的关系并编程计算。
二、实验内容
从键盘输入图的邻接矩阵和一正整数m,计算结点两两之间长度为m的路的数目。考虑有向图和无向图。用C语言实现。
三、实验步骤
1.根据算法画出程序流程图
2.根据流程图写源程序
3.编译连接源程序得出结果
四、源程序和实验结果
源程序:
#define n 5
#include <stdio.h>
void main(void)
{
int A[n][n],An[n][n],An_1[n][n];
int i,j,k,l,m;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&A[i][j]);
}
printf("\n");
scanf("%d",&m);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
An_1[i][j]=A[i][j];
for(l=0;l<(m-1);l++)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
{
if(k==0)An[i][j]=An_1[i][k]*A[k][j];
else An[i][j]=An[i][j]+(An_1[i][k]*A[k][j]);
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
An_1[i][j]=An[i][j];
}
printf("An\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",An[i][j]);
printf("\n");
}
}
实验结果:
0 1 0 0 0
1 0 1 0 0
0 1 0 0 0
0 0 0 0 1
0 0 0 1 0
4
An
2 0 2 0 0
0 4 0 0 0
2 0 2 0 0
0 0 0 1 0
0 0 0 0 1
Press any key to continue
不好意思 错了 没权值矩阵 不好意思
分给上边的那位吧
不好意思 又找到了 东西有点乱。。。。
#define n 5
#include <stdio.h>
void main(void)
{
int bijiao(int a,int b,int c[n]);
int linjie[n][n]={0,1,0,1,1,1,0,1,1,1,0,1,0,1,0,1,1,1,0,1,1,1,0,1,0};//邻接矩阵
int quan[n][n]={0,1,0,3,2,1,0,2,2,1,0,2,0,2,0,3,2,2,0,3,2,1,0,3,0};//权值矩阵
int yi[n]={100,100,100,100,100},shengchengshu[n][n],shengchengshu2[n][n];
int i,j,k,temp1,temp2,temp3,he=0,buchonghe;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
shengchengshu[i][j]=0;
temp1=100;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
if((quan[i][j]<temp1)&&(quan[i][j]!=0))
{
temp1=quan[i][j];
yi[0]=i;
yi[1]=j;
}
shengchengshu[yi[0]][yi[1]]=1;
printf("temp1=%d\n",temp1);
he=he+temp1;
for(k=0;k<(n-2);k++)
{
temp2=100;
for(i=0;i<(k+2);i++)
for(j=0;j<n;j++)
if(linjie[yi[i]][j]==1)
if(buchonghe=bijiao(k,j,yi))
if((quan[yi[i]][j]<temp2)&&(quan[yi[i]][j]!=0))
{
temp2=quan[yi[i]][j];
yi[k+2]=j;
temp3=yi[i];
}
printf("temp2=%d\n",temp2);
shengchengshu[temp3][yi[k+2]]=1;
he=he+temp2;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
shengchengshu2[j][i]=shengchengshu[i][j];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
shengchengshu[i][j]=shengchengshu[i][j]||shengchengshu2[i][j];
printf("he=%d\n",he);
for(i=0;i<n;i++)
printf("%d",yi[i]);
printf("\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",shengchengshu[i][j]);
printf("\n");
}
}
int bijiao(int k,int j,int yi[n])
{
int i;
int buchonghe;
for(i=0;i<(k+2);i++)
{
if(i==0)buchonghe=(j!=yi[i]);
else buchonghe=(buchonghe&&(j!=yi[i]));
}
return buchonghe;
}
和你的要求一模一样 用C语言实现的 就是当时为了调试没有输入
你自己把那两个矩阵改成输入就可以了
基本上所有变量都是用汉语拼音的 你应该可以看懂
我相信你的智商 嘿嘿 给分吧
4. 离散数学最短路径的问题 带权图
从v0开始
可以发现有v1,v2两个顶点相连
计算权重,选权重小的那条边v0v1。
然后从v1,开始观察与v1相连的点v3,v2,v4
v1、v3相连的路径,权重最小的是v1v2v4v3=6,舍去v1v3这条边
v1、v4相连的路径,权重最小的是v1v2v4=2+1=3,舍去v1v4这条边
v1、v2相连的路径,权重最小的是v1v2=2
v4、v5相连的路径,权重最小的是v4v3v5=3+2=5,舍去v4v5这条边
5. 离散数学中用迪克斯特拉算法求出a到z的最短路径,详细的解答过程
离散数学中用迪克斯特拉算法求出a到z的最短路径,详细的解答过程
最短距离是8,不过你图中没有中间结点的标号,不好说明哦
离散数学中用迪克斯特拉算法求出a到z的最短路径,详细的解答过程
6. 离散数学最短路径问题,想知道那个图的LF那一行是怎么得来的应该很简单,急求啊
这不是最短路径问题,是关键路径问题。
我们把从源点到汇点的最长路径(路径上各边的权值之和)称为关键路径
事件的最早发生时间E(vi) 和最迟发生时间 L(vj)
E(vi):从源点v1到vi的最长路径的长度
L(vi):在不推迟整个工程完成的前提下,一个事件vi允许的最迟发生时间。
L(vi)=E(vn)-vi到vn的最长路径的长度
活动的最早开工时间 ES(ai)
最迟开工时间 LS(aj)
最早完工时间 EE(ai)
最迟完工时间 LE(aj)
最迟开工时间和最迟完工时间,均是在不推迟整个工程完成的前提下
计算方法:
①E(vj)的计算:从源点开始,自左到右对每个事件向前计算,直至计算到汇点为止。可用如下递推公
式:
E(v1)=0
E(vj)=max{E(vi)+w(i,j)} (j = 2,…,n)
②L(vj)的计算:从汇点开始,自右到左逐个事件逆推计算,直至计算到源点为止。可用如下递推公式:
L(vn)=E(vn)
L(vj)=min{L(vk)-w(j,k)} (j = n-1,…1)
若活动ai由边<vj,vk>表示,则有:
ai的最早开工时间: ES(ai) = E(vj)
ai的最迟开工时间: LS(ai) = L(vk)-w(j,k)
ai的最早完工时间: EE(ai) = E(vj) +w(j,k)
ai的最迟完工时间: LE(ai) = L(vk)
如果你认可我的回答,敬请及时采纳,
祝你学习进步,更上一层楼! (*^__^*)