Algorithmics (演算法) 2018

Lecturer: 江振瑞
Teaching Assistants (TAs): 楊宜昌 范振倫 謝金男 高健賓
Time: 週三 14:00~16:50
Place: E6-A306 and E6-A303 (Audio and Slides)

TA Class: 週三 13:00~13:50 (E6-A306)
Scoring:
TextBook:
Reference Books:
Programming:
  • 安裝課程相關軟體及原始程式碼: Jeep6 (for JAVA platform on Windows)(下載: Jeep6Setup&SourceCode.exe)
  • 1 安裝Java Development Kit (JDK): http://java.sun.com/javase/downloads/index.jsp
    2 安裝MinGW C++ Compiler (G++): http://prdownloads.sf.net/mingw/MinGW-3.0.0-1.exe?download
    3 安裝最新Python 3 Interpreter: https://www.anaconda.com/
    4 安裝Jeep6(Java editor for Chineseprogrammers v6.0) (下載: Jeep6Setup&SourceCode.exe)
    5 設定路徑參數: 注意,這會因為你安裝上列不同軟體的不同版本而不同,也會因為你安裝的作業系統版本不同而不同。以下為針對Win7 64位元作業系統,安裝由本網站區域下載軟體的設定:

    選擇 [控制台][系統及安全性][系統][進階系統設定][環境變數],找出[path]變數並按下[編輯],以在其變數值末端加入


    ;JDK安裝目錄\bin;MinGW安裝目錄\ bin;Python安裝目錄;Jeep6安裝目錄 
    (例如:   ;C:\Program Files\Java\jdk-9.0.4\bin;C:\MinGW\bin;C:\Users\yourname\Anaconda3;C:\Jeep6)


    6 下載範例程式(Sample.c)(Sample.cpp)(Sample.java)(Sample.py)儲 存於C:\Jeep6目錄中,按下桌面Jeep6圖示執行Jeep6軟體,並使用 [開舊檔]選項載入範例程式進行[編譯][執行]。

  • ACM國際大學生程式設計 競賽 (ACM International Collegiate Programming Contest, ACM-ICPC) (ACM-ICPC&EPC.ppt)
  • Syllabus:  
    A. 給定一個0/1背包問題如下;背包荷重W=12,且4個物品其重量各為6、4、5、3,其價值各為20、30、40、10,說明藉由動態規劃演算法解決此0/1背包問題的過程。
    B. 以子集合加總動態規劃演算法解決以下子集合加總問題: 給定整數集合S={1, 2, 4, 7}及整數c=10。
    C. 修改子集合加總動態規劃演算法使其傳回加總值為c的子集合若此子集合存在;否則傳回空集合。
    D. 令S = (-2, 1, -3, 4, -1, 2, 1, -5, 4), 使用
    動態規劃演算法求出最大連續非空子序列和。
    E. 設計
    最大連續可空子序列和動態規劃演算法。
    F. 說明X=ABCBA與Y=BDCA兩個字串藉由動態規劃演算法求出最長共同子序列的過程。
    G. 藉由動態規劃演算法來替一矩陣鏈(其維度序列為 <5, 20, 10, 12> )加上括號來最佳化矩陣相乘次數。
    H. 給定p1=0.2, p2=0.15, p3=0.3; q0=0.1, q1=0.08, q2=0.07, q3=0.1,以最佳二元搜尋樹動態規劃演算法建構出最佳二元搜尋樹。
    I. 畫圖說明利用利用Floyd-Warshall演算法求以下圖(graph)全對最短路徑(all-pair shortest path)距離(成本)(此圖的啟始距離矩陣如下,以經過的中間節點為s, a, b, c, d的順序寫出距離矩陣的改變過程。)
    (d->b的加權在圖形與表格中誤植為不一致的值,同學可以將之改為5或6讓圖形與表格一致後解題都算答對。)

     
    J. 求出以下給定圖(graph)的Floyd-Warshall演算法的啟始前節點矩陣(陣列),並求出最後的前節點矩陣(陣列)。
    A graph
    L. 針對以下的給定圖,列出Bellman-Ford最短路徑演算 法執行過程, 說明Bellman -Ford最短路徑演算法如何檢查出一給定圖具有負循環(negative-weight cycle)。


    Links:

    Back to My Home