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)
如果你認可我的回答,敬請及時採納,
祝你學習進步,更上一層樓! (*^__^*)