對於工大的專業課考試,考試範圍和往年題型是最重要的兩個東西。
然而算法課考試,老師在考試以前沒說題型,甚至連考試範圍都說的很模糊;智障記憶那裏賣的題差很少又都是將近10年之前的題,題型上可能有一些出入,網上可以搜到的也只有一篇13年的題型介紹(直接百度便可搜到)。所以這些都給咱們的考前複習(預習)帶來了很大的不便。
所以在這裏憑記憶將今年的期末考試題型記錄一下,但願對之後的學弟學妹們有幫助。java
判斷題(10 * 2 分)算法
印象中有幾道題不是很簡單,考的知識點比較細。涵蓋的知識點主要有第一章算法的基本概念,排序算法的理解,圖算法,字符串算法,搜索等。總之就是除了分治貪心動態規劃以外的其餘幾章知識點的考察(但不能保證分治貪心動態規劃不考),涵蓋的還算全面。函數
能記得的有如下幾道題:優化
A*算法必定能夠獲得最優解?
調試程序能夠證實算法的正確性?
dijkstra算法是貪心算法?
若是一個基於比較的排序算法的時間複雜性是Ω(nlogn),那麼他多是基於比較算法中時間複雜性最低的算法?
一個關於堆排序的插入和刪除操做的時間複雜性的問題。(具體怎麼問忘了)
一個問KMP算法的時間複雜性的問題。調試
簡答題(5 * 4分)blog
第一題:一個master定理的題目(很相似於ppt上的一道例題)應該是T(n) = 3T(n/4) + n^(1/2)排序
第二題:一個很是簡單的複雜函數階的證實,已知fx = O(g(x)), gx = o(hx),證實 fx = o(hx)遞歸
第三題:寫出0-1揹包問題的輸入規模和時間複雜性ci
第四題:說明平攤分析的目的,以及任舉一種平攤分析方法說明其大體思想,以及使用時須要注意的點字符串
第一道大題(8分)
一個最大流的問題,給了一個最大流的圖
第一問要求畫出某一步以後的餘圖
第二問要求找出一條可使流量增長1的増廣路徑
第三問要求給出一個最小割
第二道大題(7分)
給出一個加權有向圖,要求用A*算法把整個過程寫一遍,並給出最後所得的最短路徑。
第三道大題(20分)
分治算法的題,是做業題上的一道原題。
原題以下:
分三個小問
第一問寫出算法思想
第二問寫僞代碼
第三問分析時間複雜度
第四道大題(15分)
貪心算法的題。(這道題我真是無力吐槽,考場上沒看懂怎麼寫,考完以後問了幾個同窗都說貪心思想和算法隨便寫的,且每一個人寫的都不同,後來問老師那個題怎麼寫,老師說只要言之有理都算對,,,)
題目大概寫一下吧,反正我以爲這題出的真差,大家複習的時候能夠本身找點別的貪心算法的題作。
有一條環形公路,公路上有n個加油站,一輛油箱容量無限大的汽車在這條路上行駛,每一個加油站所能給車加的最大油量爲si,車在每兩個加油站之間行駛耗得油爲ci。要求寫出一個貪心算法,讓這個車選擇一個加油站做爲起始點,可以成功繞這個環形公路一圈並回到起始點,若是沒有這樣的加油站,則返回-1,有則返回所選擇的起始加油站的編號。
第一問寫貪心思想
第二問證實貪心思想
第三問僞代碼
第四問時間複雜度
第五道大題(10分)
動態規劃的題。比較簡單,多作幾道動態規劃的題應該就能夠作出來了。
題目大體以下:
給定如圖所示的一個樹狀圖,每一個節點上都標有該點權值,該樹共有5層,從第一層的節點進入,從第五層的節點出來,要求找出一條長爲4(即經過了5個節點)的路徑,使得該條路徑所通過的5個節點和最小。
圖像大體以下:
第一問寫優化子結構和子問題重疊性,並要求證實之。
第二問寫dp方程。(就是關鍵部分遞歸的方程)
第三問寫僞代碼
第四部分時間複雜度。
試題格式是判斷題加簡答題加大題的形式,判斷題的話主要仍是考第一章和後面幾章的基本知識點;簡答題和大題中,master定理應該必考,最大流應該必考,給一個圖用指定搜索算法寫搜索過程應該必考,分治算法,貪心算法,動態規劃這三章應該是必各出一道大題的。 建議平時做業題必定要作,出原題的可能性很大;平時做業題必定要動手寫僞代碼,不能只是會這道題的思想了就做罷,不然考場上極可能寫不出僞代碼,或者把僞代碼寫成c語言或java語言(這種狀況會十分的浪費時間,且沒有必要);課件上的經典算法(尤爲是最長公共子序列,01揹包,任務安排問題)要熟悉到會寫算法僞代碼的程度。