導航:首頁 > 編程語言 > 關鍵路徑演算法java

關鍵路徑演算法java

發布時間:2024-05-08 15:12:57

㈠ 題目1:一個簡單的演算法演示程序(java語言實現)

1. 選擇一個演算法(提供選擇見下),利用各種方法(圖形、動畫等)演示演算法的演示過程。
2. 可以進行手動演示,也可以自動步進式演示。
3. 允許用戶設置演算法的各個輸入參數,以及自動步進式演示中的時間間隔。
4. 不同的演算法輸入要求見下。
界面要求:
1. 盡量使用圖形界面實現,要符合日常軟體使用規范來設計菜單和界面。
2. 如果無法實現圖形界面,則在命令行方式下也需要提供菜單,方便用戶操作。
其他要求:
1. 標識符命名遵循Windows命名規范。
2. 能夠注意各種異常處理,注重提高程序運行效率。
提交內容:
1. 全部源代碼
2. 軟體設計和使用說明書(UML類圖;實現的功能、主要技術;使用幫助文檔)
參考演算法:
1. 最小生成樹演算法:Prim演算法、Kruskal演算法。允許以下方式輸入一個圖形:繪制圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示演算法執行步驟。
2. 單源最短路演算法:Dijkstra演算法。允許以下方式輸入一個圖形:繪制圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示演算法執行步驟。
3. 最優編碼演算法:Huffman編碼演算法。允許用戶輸入一段英文文字,或者打開一個txt文檔(英文內容),據此文檔內容進行編碼。要求動態列出每個字元的出現概率統計結果以及對應編碼。
4. 其他可供演示的具有一定難度的演算法,如關鍵路徑問題、有向圖的極大連通分支等。

㈡ 想要系統學習java到底要學習哪些知識

一、java基礎

學習任何一門編程語言,首先要學習的是基礎語法,開啟Java學習的第一步,當然就是深入掌握計算機基礎、編程基礎語法,面向對象,集合、IO流、線程、並發、異常及網路編程,這些我們稱之為JavaSE基礎。當你掌握了這些內容之後,你就可以做出諸如:電腦上安裝的迅雷下載軟體、QQ聊天客戶端、考勤管理系統等桌面端軟體。

java學習路線大陸傳送門

㈢ java學習線路是怎樣的

要學習Java,你首先得了解一下什麼是java:


Javaweb是用Java技術來解決相關web互聯網領域的技術總和。說的簡單的就是寫網站的一種語言。一般分為前端和後端兩種方向,前端所做的東西就像幕前表演的演員,所做的就是讓網頁看起來順眼,用起來順心,而後端則屬於處理數據,讓程序處理速度、能力不斷優化,屬於幕後。前後端的配合才能是一個網站正式投入使用。

接下來就是關於java體系主要涉及的三個方面——J2SE/J2EE/J2ME(KJAVA)

0.J2SE

新手最初學習的時候先要從J2SE開始學起,所包含的內容前端的學習都是需要不斷的學習,學一天停一停相當於白學,學習效果很差,如果你想有人一起學習可以來這個扣裙,首先是132 中間是667最後是127 都是零基礎的同學,大家相互鼓勵 共同努力 只是學著玩就不建議來了!!!主要分為:面向對象概念的理解、Java基本語法的學習,Java桌面圖形界面應用程序的開發,掌握常用的Java API等(關鍵是要學會怎樣查閱)。

重點:Java基本語法(循環結構,數據類型,數組,運算符等)、Swing,awt,事件機制、文件輸入輸出流處理等

難點:面向對象思想的理解(介面、類等)、線程、socket網路編程等

1.J2EE

J2SE之後,便可以開始慢慢過渡到J2EE。要學習J2EE除了java之外,還得學習比如資料庫技術,網頁編程技術等等。

J2EE有三個必學的框架,分別是Struts、spring和hibernate。他們之間的關系,簡單來說這三個框架=J2EE,而J2EE≠這三個框架。那麼J2EE都包含了哪些技術呢?就先給大家簡單介紹幾個吧:

JDBC:Java資料庫連接對象,基礎中的基礎,Hibernate也只是對它的封裝而已 JNDI: Java 命名與目錄介面,J2EE重要規范之一

EJBS: 上面已經提到過了

RMI: 提供遠程調用方法的支持,主要用於程序分布式開發

JMS: Java消息服務,中間件技術

JAVA IDL: 提供J2EE平台與CORBA交互能力和互聯能力的技術

JTS: 組件事務監視器

JTA: 事務劃分的一個技術

JAVAMAIL: Java中的郵件技術

JAF: Java啟動框架,沒研究過

Log4j,一款日誌處理的框架應用

Junit:單元測試的好幫手

freemarker、velocity:兩款不錯的模板引擎

與Flash的交互Flex:目前很多的SNS應用就是使用到了這個技術

Web services:例如天氣預報的製作,就靠它。

SOA:面向服務架構,未來技術發展的趨勢之一

……

雖然羅列了很多,但最核心也是最需要學習的只有:JDBC、jsP、servlet和JavaBean,後面三個也是學習SSH的基礎(StrutsSpringHibernate的簡稱).

當然,找工作的前提除了把Java學習好,還會有一些其他的技術也是必須要掌握的。

除了這些技術的東西,在這階段,大家更多的是會接觸到比如設計模式的東西,比如工廠模式、橋梁模式、單例模式等等,還要學習建模思想和軟體生命周期等等。

這些是升華大家編程思想的手段和途徑。

2.J2ME


最後就是第三階段——手機程序的開發。

開發手機程序技術其實蠻簡單的,難點在於優化,比如怎麼讓你寫的程序盡量的節約手機資源,「代碼誠可貴,手機價更高「,所以不得不比PC機多考慮很多成本和實用性問題。.

J2ME的學習,不僅僅是在模擬器上測試,若有條件真機測試才是最佳方式,畢竟真機和模擬器的效果之間差別是很大的。

最後再給大家提供一個開發工具——eclipse

功能很強大,也很好拓展其他的功能。當然也可以選擇JCreator,或者最好就直接用記事本。等你熟悉了Java代碼之後,就可以使用JBuilder、eclispe或者netbeans這一類的工具了。

㈣ Java學習路線是怎樣的

第一階段,Java SE基礎:

Java環境搭建、流程式控制制語句-for循環、switch選擇判斷、循環嵌套、數組拷貝、多維數組、final關鍵字、構造函數的調用、類的訪問許可權和路徑、面向對象高級特性、Java異常處理、Set,Map,List介面及介面實現類、Java線程、同步阻塞、JavaIO流、文件的操作,復制,讀寫,刪除等。

第二階段,JavaWeb:

MySQL安裝、管理、創建資料庫、MySQLUPDATE
查詢、Mysql高級操作、JDBC、JDBC資料庫連接操作,JDBC動態Sql處理、Servlet3.0 網頁重定向、Servlet3.0
新增的註解支持、AJAX、responseText屬性詳解等。

第三階段,Java高級框架-SSH:

Struts2異常處理、Struts2+Log4j集成、Struts2和JSON實例、Hibernate5、Hibernate集合映射、Hibernate組件映射、Spring4.0、SpringAOP+
AspectJ框架、Spring 與其它Web框架集成、Spring Hibernate支持等。

第四階段,Java高級框架-SSM:

SpringMVC、Spring MVC生成JSON數據、MyBatis、MyBatis 環境配置及入門、Mybatis set標簽、Mybatis trim標簽、Shiro、Shiro快速入門教程、Shiro Web應用等。

第五階段,SpringBoot+VUE全棧框架:

SpringBoot、全局異常處理、過濾器監聽器、EHCache緩存、SpringBoot Quartz定時任務、Vue、Vue.js 安裝、模板語法、計算屬性、事件處理器、Vue.js 自定義指令、Vue.js 路由等

第六階段,特色課程:

ActiveM環境搭建、生產者和消費者、消息持久化操作、RSA數字加密演算法、Codebar條形碼生成器、zxing二維碼生成器、HighCharts統計圖、Echarts統計圖、網路播放器ckplayer、嵌入式網路播放器,可以瀏覽器和移動端隨意使用

第七階段,互聯網框架的高級應用1:

分布式服務框架的理解,Dubbo架構設計詳解及其核心要點,框架運行原理分析、SpringData數據訪問、Lucene搜索引擎、Lucene的全文搜索伺服器介紹、索引建立方式、Solr海量數據搜索引擎、Socket網路通信、實現RMI遠程對象通訊、使用JMS消息服務、Kafka分布式消息系統、WebService與RestfulWS等

第八階段,互聯網框架的高級應用2:

Spring Security安全框架、實現Web應用安全控制、緩存應用與EhCache框架、OSCache與JBossCache框架、MyBatis與Hibernate緩存機制、NoSQL應用與SQL調優、MongoDB
NoSQL資料庫、Redis內存資料庫、實現RedisSession共享、SQL語句的優化、實現資料庫讀寫分離、WEB應用集群及性能優化、Maven項目管理工具、Web伺服器負載均衡、實現Nginx與Tomcat集群、使用LoadRunner測試工具、性能優化之內存調優、代碼優化與重構的方法等。

對java有興趣的小夥伴們,不妨先從java入門開始!B站上有很多的java教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細致,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。



㈤ 關鍵路徑怎麼求求詳解。

關鍵路徑的演算法是建立在拓撲排序的基礎之上的,這個演算法中用到了拓撲排序。

1. 什麼是拓撲排序?

舉個例子先:一個軟體專業的學生學習一系列的課程,其中一些課程必須再學完它的基礎的先修課程才能開始。如:在《程序設計基礎》和《離散數學》學完之前就不能開始學習《數據結構》。這些先決條件定義了課程之間的領先(優先)關系。這個關系可以用有向圖更清楚地表示。圖中頂點表示課程,有向邊表示先決條件。若課程i是課程j的先決條件,則圖中有弧<i,j>。若要對這個圖中的頂點所表示的課程進行拓撲排序的話,那麼排序後得到的序列,必須是按照先後關系進行排序,具有領先關系的課程必然排在以它為基礎的課程之前,若上例中的《程序設計基礎》和《離散數學》必須排在《數據結構》之前。進行了拓撲排序之後的序列,稱之為拓撲序列。

2. 如何實現拓撲排序?

很簡單,兩個步驟:

1. 在有向圖中選一個沒有前驅的頂點且輸出。

2. 從圖中刪除該頂點和以它為尾的弧。

重復上述兩步,直至全部頂點均已輸出,或者當前圖中不存在無前驅的頂點為止。後一種情況則說明有向圖中存在環。

3. 什麼是關鍵路徑?

例子開頭仍然,圖1是一個假想的有11項活動的A0E-網。其中有9個事件v1,v2......,v9,每個事件表示在它之前的活動一完成,在它之後的活動可以開始。如v1表示整個工程的開始,v9表示整個工程結束,v5表示a4和a5已完成,a7和a8可以開始。與每個活動相聯系的數是執行該活動所需的時間。比如,活動a1需要6天,a2需要4天。

packagegraph;
importjava.util.*;
publicclassGrph_CriticalPath
{
Graph_AdjListadjList;
Stack<Integer>T=newStack<Integer>();
intve[];
intvl[];
finalintmax=10000;

publicGrph_CriticalPath(Graph_AdjListadjList)//圖的存儲結構是用的鄰接表
{
this.adjList=adjList;
intlength=adjList.vetexValue.length;
ve=newint[length];
vl=newint[length];
for(inti=0;i<length;i++)
{
ve[i]=0;
vl[i]=max;
}
}

publicvoidgetCriticalPath()
{
topologicalOrder();

intt=T.pop();
T.push(t);
vl[t]=ve[t];
while(!T.isEmpty())
{
intj=T.pop();
for(Graph_AdjList.ArcNodep=adjList.vetex[j].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
if(vl[k]-p.weight<vl[j])
{
vl[j]=vl[k]-p.weight;
}
}
}
for(inti=0;i<ve.length;i++)
{
for(Graph_AdjList.ArcNodep=adjList.vetex[i].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
intee=ve[i];
intel=vl[k]-p.weight;
if(ee==el)
{
System.out.print(i+","+k+"");
}

}
}
}

publicvoidtopologicalOrder()
{
Stack<Integer>S=newStack<Integer>();
S.push(0);
intcount=0;
while(!S.isEmpty())
{
intj=S.pop();
T.push(j);
count++;
Graph_AdjList.ArcNodep=null;
for(p=adjList.vetex[j].firstArc;p!=null;p=p.next)
{
intk=p.adjvex;
if(--adjList.degree[k]==0)
{
S.push(k);
}
if(ve[j]+p.weight>ve[k])
{
ve[k]=ve[j]+p.weight;
}
}
}
if(count<adjList.vetexValue.length)
{
System.out.println("圖中存在環路!");
return;
}
}

publicvoidprint()
{
while(!T.isEmpty())
{
System.out.print(T.pop()+"");
}
}

publicvoidprintVel()
{
System.out.println();
for(inti=0;i<ve.length;i++)
{
System.out.print(ve[i]+"");
}
System.out.println();
for(inti=0;i<vl.length;i++)
{
System.out.print(vl[i]+"");
}
}


}

轉自:http://blog.csdn.net/pigli/article/details/5777048

㈥ java主要是學習什麼啊

掌握java基礎是大前提;
開始企業級應用,提供介面,核心其實就是增刪改查;專
進階了就是聯通各大主屬流企業框架,比如redis kafka springcloud nginx docker mysql等等;
再高階就是設計架構,整合這些東西,對企業應用的整個生態體系有一個完整的認識,比如並發量、設計思路、消息系統、日誌系統、微服務等等,看作者當前的階段了

閱讀全文

與關鍵路徑演算法java相關的資料

熱點內容
微雲保存文件圖片沒有了 瀏覽:236
如何把excel表格圖片導出到文件夾 瀏覽:387
qq三國快速升級攻略 瀏覽:660
js監聽手機home事件 瀏覽:439
第2章linux的桌面管理副本 瀏覽:452
qq郵箱手機上登錄微信賬號密碼錯誤 瀏覽:627
編程如何讓人物重復發射子彈 瀏覽:853
db2查看錶空間文件 瀏覽:607
ps文件界面設置 瀏覽:779
c語言12位的數據應該怎麼存儲 瀏覽:953
將ape導入iphone 瀏覽:107
js組合快捷鍵 瀏覽:174
linux系統盤默認掛在的文件夾 瀏覽:667
淘寶數據包如何操作上架 瀏覽:567
vb編程中輸入cls是什麼意思 瀏覽:81
linuxtime服務 瀏覽:184
瘋狂安卓講義第二版代碼 瀏覽:420
老炮兒三小時版本下載 瀏覽:313
matlab怎麼調試程序 瀏覽:2
winxp升級win7的危害 瀏覽:496

友情鏈接