You are on page 1of 9
a | te Avex ST ESA KSCP Examination 2016/2017 Academic Session August 2017 CCS592 — Advanced Algorithms and Comple: [Algoritma Lanjutan & Kekompleksan] Duration : 2 hours [Masa : 2 jam] INSTRUCTIONS TO CANDIDATE: JARAHAN KEPADA CALON:] + Please ensure that this examination paper contains FOUR questions in NINE printed pages before you begin the examination [Sila pastikan bahawa kertas peperiksaan ini mengandungi EMPAT soalan di dalam ‘SEMBILAN muka surat yang bercetak sebelum anda memulakan peperiksaan ini.] + Answer ALL questions. (Jawab SEMUA soalan.J + You may answer the questions either in English or in Bahasa Malaysia. [Anda dibenarkan menjawab soalan sama ada dalam bahasa Inggeris atau bahasa Malaysia.] + Inthe event of any discrepancies, the English version shall be used. [Sekiranya terdapat sebarang percanggahan pada soalan peperiksaan, versi bahasa Inggeris hendaklah diguna pakai.J sale (@) [ccss92] -2 John proposes a new search algorithm for sorted array, which he calls quarter_search. The quarter_search algorithm is modified from the binary search algorithm. John said that the algorithm is more efficient than the binary search algorithm. Figure below describes the algorithm. Note: The parameter A is an integer array, targets the integer value to search, /owis the lower boundary, and high is the upper boundary. John mencadangkan suatu algoritma carian baru untuk tatasusunan yang telah diisih, yang mana dia panggil quarter_search. Algoritma quater_search ini adalah diubahsuai daripada algoritma carian binari. John menyatakan bahawa algoritma tersebut lebih efisien daripada algoritma carian binari. Rajah di bawah ‘menerangkan algoritma tersebut. Nota: Parameter A adalah tatasusunan integer, target ialah suatu nilai integer, low ialah batas bawah, dan high alah batas atas. int quarter_search(int{] A, int target, double low, double high){ while (low <= high){ int q2 = q1 + quarter; q3 = q2 + quarter, if (Alqt] == target){ retum q1; Yelse if (Alq2] == target return q2; else if (Alq3] == target){ return 93; Yelse if (Alqt] > targetyt return quarter_search(A, target, low, 41); } else if (A[q2] > target){ return quarter_search(A, target, 41, 42); else if (Aga) > target return quarter_search(A, target, q2, 43); } else if (Afq3] < target){ return quarter_searchiA, target, q3, high); } } return -1; } Note: Math.rint() returns the nearest integer for a real value. e.g. Math.rint(0.51) will return 1, and Math.rint(0.25) will return 0. Nota: Math.rint () mengembalikan integer terdekat untuk nilai nyata. Contohnya, Math.rint(0.51) akan mengembalikan 1, dan Math.rint(0.25) akan ‘mengembalikan 0. [ccss92] “36 () Given an array A = [1, 3, 4, 7, 9, 10, 13, 16], and target value 3. Simulate quarter_search algorithm to find the target value in the array. 5 Diberikan tatasusunan A = [1, 3, 4, 7, 9, 10, 13, 16], dan nilai sasaran 4 Simulasikan algoritma quarter_search untuk mencari nilai sasaran dalam tatasusunan. (ii) Give two (2) primitive operations used in the algorithm. 10 Berikan dua (2) operasi primitif yang digunakan dalam eee (ii) Analyze the algorithm using recurrence tree, and find best case and worst case time complexity of the quarter_search algorithm in big-O. Analisa algoritma tersebut menggunakan pohon berulang, dan carikan ).5 kerumitan masa bagi kes terbaik dan paling buruk algoritma quarter_search dalam O besar. (iv) Compare quarter_search, binary search and linear search in terms of time complexity? WG { 0 Bandingkan quarter_search, carian binari, dan carian linear dari segi kerumitan masa? (70/100) (b) Solution used in finding convex hull can be applied for traveling salesman problem, a problem of finding the shortest path that will visita city once. Do you__/() think the solution obtained will be good or bad, and explain why?/Desoribe also the way you would modify the Graham scan algorithm which is sed in finding convex hull in solving traveling salesman problem. Use examples to help you ~) explain your solution. ) Pendekatan yang digunakan dalam mencari lekuk cembung boleh digunakan untuk masalah perjalanan jurujual, iaitu suatu masalah untuk mencari laluan terpendek yang akan melawat setiap bandar sekali, Adakah anda fikir penyelesaian yang diperolehi adalah baik atau buruk, dan jelaskan mengapa? Terangkan juga cara anda mengubah suai algoritma imbasan Graham yang digunakan dalam mencari lekuk cembung dalam menyelesaikan masalah perjalanan jurujual. Gunakan contoh untuk membantu anda menjelaskan penyelesaian anda. (30/100) Al [ccss92] -4- John has just arrived in Penang, and he is asking his classmate Ahmad to sketch him the routes from USM to Gumey. Ahmad sketches the main routes for John as shown in the figure below. The edge shows the distance in km from one location to another. ‘Answer the following questions based on the given figure. John baru tiba di Pulau Pinang, dan dia meminta rakan sekelasnya Ahmad untuk melakarkan laluan-laluan dari USM ke Gurney. Ahmad melakarkan laluan utama untuk John seperti ditunjukkan dalam rajah di bawah. Pinggir menunjukkan jarak dalam km dari satu lokasi ke lokasi lain. Jawab soalan berikut berdasarkan rajah yang diberikan. Jelutong Tesco Komtar (a) Describe a brute-force approach to find the shortest route from USM to Gurney. Terangkan pendekatan yang mudah untuk mencari laluan terpendek dari USM ke Gumey. (30/100) (b) What is the problem with the brute-force approach described in (a)? Apakah masalah dengan pendekatan mudah yang diterangkan dalam (a)? (10/100) (©) Describe an approach using dynamic programming to find the shortest path from USM to Gurney. Terangkan pendekatan menggunakan pengaturcaraan dinamik untuk mencari laluan terpendek dari USM ke Gumey. (30/100) (4) Explain how beam search is different from dynamic programming in finding the shortest path. What is the advantage of beam search over dynamic programming? Terangkan bagaimana pencarian alur berbeza daripada pemprograman dinamik dalam mencari laluan terpendek. Apakah kebaikan penggunaan pencarian alur berbanding dengan pemprograman dinamik? (30/100) on Ble 3. [ecss92] -5- () Based on the graph below, determine whether the following statements are true or false. Justify your answers. Berdasarkan graf di bawah, tentukan sama ada kenyataan-kenyataan berikut benar atau palsu. Jelaskan jawapan-jawapan anda. ©) ene oo} (This is a connected graph Ini sebuah graf terkait. (i) This is a bipartite graph. Ini sebuah graf dwipihak. (ii) This is a planar graph. Ini sebuah graf sesatah. (iv) This is not a complete graph. Ini bukan graf lengkap. (v) This graph has one connected component. Graf ini mempunyai sebuah komponen terkait. (25/100) Ble (b) [ccss92] -6- Given below is the pseudocode for finding shortest path based on the Dijkstra algorithm. Diberikan di bawah pseudokod untuk mencari lintasan terpendek berdasarkan algoritma Dijkstra. 4 procedure Dijkstra(G, w, r, Parent{0:n-1], Dist) 2 forve-Oton-t do 3 Disi{y] — 4 InTheTree[v] false. 5 endfor 6 Parent] —1 7 Dist{e] -0 8 for Slage 1 ton-t do 9 Select vertex u that minimisesDist(u] overall u such that InTheTree{u] = false 10 InTheTree[u] = .true. 4 for each vertex v such that uve E do. 12 if not. InTheTree[v[ then 13 if dist{u] + w(uv) < Dist{y] then 14 Dist{v] — Dist{u] + w(uv) 15 Nearest{v] —(u») 16 Parent{y] —u 7 endif 18 endif 19 endfor 20 endfor 21 end Dijkstra (i) Is this algorithm considered to be a greedy method? Explain by referring to the above pseudocode. ‘Adakah algoritma ini dianggap sebagai kaedah tamak? Jelaskan dengan ‘merujuk kepada pseudokod di atas. (ii) Whats the role of ine 10 in the above pseudocode? (i) Apakah peranan baris 10 dalam pseudokod di atas? Based on the above pseudocode, state the complexity of this algorithm and indicate which part of the pseudocode actually contributes to this complexity. Berdasarkan pseudokod di atas, nyatakan kekompleksan algoritma ini dan tunjukkan bahagian manakah dalam pseudokod berkenaan yang sebenamya menyumbang kepada kekompleksan ini. wale Co) (wv) 0) qi) {ccss92] “7. Trace step by step how the algorithm works on the following graph from node 0. You are not required to show the content of the arrays involved. ‘Surih langkah demi langkah bagaimana algoritma berkenaan dilaksanakan ke atas graf berikut bermula dari nod 0, Anda tidak perlu menunjukkan kendungan tatasusunan yang terlivat. (45/100) Given below is a simple bipartite graph and its initial matching. Give the next augmented path, its corresponding augmented matching and the final perfect matching. You are not required to show the alternating tree. Diberikan di bawah sebuah graf dwipihak mudah dan pemadanan awalnya. Beri lintasan tertambah selanjutnya dan pemadanan tertambahnya yang sepadan dan pemadanan sempuma yang muktamad. Anda tidak perlu ‘menunjukkan pepohon selang-selinya. X. x. In the perfect matching algorithm, we normally used the convention of “always choose vertex with the smallest index first” instead of “choose any vertex’. If we were to instead use “choose any vertex’, would we be getting a different matching for the above bipartite graph? Why? Dalam algoritma pemadanan sempuma, kita biasanya menggunakan konvensyen ‘sentiasa pilin bucu dengan indeks terkeci! dahulu” bukannya “pilh mana-mana bucu’. Jika kita menggunakan ‘pilh mana-mana bucu’, adakah kita akan memperoleh pemadanan yang berbeza bagi graf dwipihak di atas? Mengapa? (30/100) 4, [ccss92] (a) The following pseudocode determines the shift for pattern P (based on alphabet A) in the Boyer-Moore string-matching algorithm, Pseudokod berikut menentukan anjakan pola P (berdasarkan abjad A) dalam algoritma pemadanan rentetan Boyer-Moore. 1 2 3 4 5 6 7 8 0 qi) (i) procedure CreateShift(P[0:m-1}, shif{0: |A| - 11) fori —0to|A|-1do Shift] = m endfor fori 0tom-2do Shift{PIi] = m=i-1 endfor end CreateShift In Boyer-Moore algorithm, if there is a mismatch, then we have to consider two cases depending on the character of text T at index position m-1 that is compared against the last character of pattern P. What are the two cases and how does the above pseudocode handle the cases? Dalam algoritma Boyer-Moore, jika terdapat ketakpadanan, maka kita perlu mempertimbangkan dua kes bergantung kepada aksara dalam T pada kedudukan indeks m-1 yang dibandingkan dengan aksara terakhir dalam pola P. Apakah kedua-dua kes berkenaan dan bagaimanakah pseudokod di atas mengendalikan kes-kes tersebut? Based on the above pseudocode, the Boyer-Moore algorithm needs to create a shift table. Given that P[0:5] = “serasa’, then complete the following shift table. Berdasarkan pseudokod di atas, algoritma Boyer-Moore perlu mencipta Jadual anjakan. Diberi P[0:5] = “serasa’, seterusnya lengkapkan jadual ‘anjakan berikut. a |e [+ | s_| The rest (Yang /ain) ‘The above pseudocode certainly contributes to the complexity of the overall Boyer-Moore algorithm. What is the worst-case complexity of the above procedure? Show how this complexity contributes to the overall complexity of Boyer-Moore algorithm and state the overall complexity of the algorithm, Pseudokod di atas sudah tentulah menyumbang kepada kekompleksan keseluruhan algoritma Boyer-Moore. Apakah kekompleksan kes terburuk tatacara di atas? Tunjukkan bagaimana kekompleksan ini menyumbang kepada kekompleksan keseluruhan algoritma Boyer-Moore dan nyatakan kekompleksan keseluruhan algoritma berkenaan. (60/100) nln [ccss92] -9- (b) Without going into mathematical detail or writing any code, explain how the Fast Fourier Transform can be used to FFT can be used to design O(n log n) algorithm: for polynomial multiplication and explain also how this strategy yields O(n log n) complexity. (©) Tanpa perincian matematik atau menulis sebarang kod, huraikan bagaimana Jelmaan Cepat Fourier boleh digunakan untuk mereka bentuk algoritma O(n log n) untuk pendaraban polinomial dan jelaskan bagaimana strategi ini menghasilkan kekompleksan O(n log n). @ (i) ii) (25/100) How is a digraph used in ranking of web pages in the page rank algorithm? Also, explain how the web pages are organised as a digraph. Bagaimanakah graf berarah digunaken dalam penarafan halaman web dalam algoritma penarafan halaman? Juga, huraikan bagaimana halaman- halaman web berkenaan disusun sebagai sebuah graf berarah. Explain the significance of the in-degree of p i.e. the number of Web pages that belong to the in-neighbourhood Nwn(p) of p in the page rank algorithm? Huraikan kepentingan darjah ke dalam P iaitu bilangan laman Web yang dipunyai kejiranan ke dalam p, Ne(p) dalam algoritma penarafan halaman? In the same algorithm, the number of hyperlinks that q contains or equivalently by the out-degree dax(q) of q is also used. Explain its significance in the algorithm. Dalam algoritma yang sama, bilangan pautan hiper yang dipunyai q atau darjah ke luar q, doa(q) juga digunakan. Huraiken kepentingannya dalam algoritma berkenaan. (25/100) = 0000000 -

You might also like