• Tidak ada hasil yang ditemukan

Ujian Tengah Semester Struktur Data dan Algoritma

N/A
N/A
Protected

Academic year: 2024

Membagikan "Ujian Tengah Semester Struktur Data dan Algoritma"

Copied!
6
0
0

Teks penuh

(1)

Ujian Tengah Semester  Struktur Data dan Algoritma 

Fakultas Ilmu Komputer, Universitas Indonesia  9 November 2006 

 

Bagian A (total 75 point) 

Petunjuk: Jawablah ke‐25 pertanyaan berikut ini dan isikan jawaban anda pada lembar jawaban yang  disediakan sesuai dengan nomor balon pada pertanyaan tersebut. Pada pertanyaan dengan jawaban pilihan  ganda, jawab dengan nomor pilihannya. Setiap jawaban benar bernilai 3. Jawaban salah (termasuk pilihan  ganda) bernilai 0. 

 

Jika method xx() memiliki kompleksitas waktu O(1), tuliskan kompleksitas waktu dari method‐

method berikut ini. 

 

void method1(int n) {         for (int i=0; i<n; i++)           for (int j=0; j<n; j+=n/5)           xx(); 

void method2(int n) {         if (n<=0) xx(); 

    else method2(n – n/5); 

void method3(int n) {      if (n > 0) { 

        for (int t = 0; t < n; t++)         xx(); 

        method3(n/2); 

    }  } 

• method1(n)?  

Walaupun dua for‐loop dengan iterator dari 0 hingga n, for‐loop dalam beriterasi dalam  jumlah iterasi yang konstan (tidak bergantung harga n) yaitu sekitar 5 kali sehingga  method memiliki kompleksitas O(n).  

23 orang yang menjawab benar   

• method2(n)? 

Dalam soal ini ada salah ketik (seharusnya tertulis “if (n <= 1) xx();” ) sehingga dengan  soal tsb jika dijalankan akan loop tanpa akhir (saat harga n = 1 maka pemanggilan  method2(1) akan dilakukan terus menerus sehingga jika anda menjawab tak berhingga  anda benar. Jika anda asumsikan bahwa (n‐n/5) dilakukan secara bilangan real maka  setelah di casting dengan integer menjadi 0, akan berhenti di n = 0 dengan kompleksitas  O(log n). (Kedua jawaban adalah benar). 

36 orang yang menjawab benar   

• method3(n)? 

Sepintas seperti O(n log n) tetapi jumlah pemanggilan xx() dilakukan sebanyak  n + n/2 + n/4 + ... = 2n, jadi merupakan O(n) 

29 orang yang menjawab benar   

Manakah sifat insertion sort (pengurutan menaik) yang benar mengenai kompleksitas waktunya?  

(A) Best case terjadi pada kasus data terurut menaik  (B) Best case terjadi pada kasus data terurut menurun  (C) Best case terjadi pada kasus data terurut acak  (D) Semua kasus di atas sama saja 

(2)

saja yaitu O(n) sementara lainnya O(n2). Jawaban A. 

95 orang yang menjawab benar   

Manakah sifat heapsort (pengurutan menaik) yang benar mengenai kompleksitas waktunya? 

(A) Worse case terjadi pada kasus data terurut menaik  (B) Worse case terjadi pada kasus data terurut menurun  (C) Worse case terjadi pada kasus data terurut acak  (D) Semua kasus di atas sama saja 

Algoritma heapsort adalah melakukan heapify untuk kondisi apapun dari data dan  kemudian satu demi satu diurutkan dan heap akan direheapify sehingga untuk semua  kasus sama sana. Jawaban D.  

51 orang yang menjawab benar   

Pada data 5, 4, 3, 2, 1  (terurut terbalik),  dilakukan pengurutan menaik dengan bubble‐sort.  

• Selesai iterasi/pass pertama urutan data menjadi? 

Soal ini tidak menunjukkan arah pergeseran (walaupun di sebagian besar buku teks  adalah ke kanan), jawaban dengan asumsi ke kiri (hasilnya 4, 3, 2, 1, 5) maupun ke kanan  (1, 5, 4, 3, 2, 1) adalah benar.  

89 orang yang menjawab benar   

Diberikan array berisi data sbb: 54, 68, 86, 42, 35, 46, 88, 25, 19, 75. 

 

• Jika array dipandang sebagai suatu complete binary tree (yang direpresentasikan dalam  array tersebut), maka preorder traversal pada tree menghasilkan urutan? 

54,  68, 42, 25, 19, 35, 75, 86, 46, 88   

71 orang yang menjawab benar   

• Jika akan dilakukan heapsort pada array tersebut, setelah dilakukan operasi heapify  (tahap pembentukan heaptree) dari algoritma heapsort, maka isi array adalah? 

Ada dua varian jawaban (karena tidak disebutkan pengurutan menaik/menurun)  19, 25, 46, 42, 35, 86, 88, 68, 54, 75  (untuk pengurutan menurun) 

88, 75, 86, 42, 68, 46, 54, 25, 19, 35 (untuk pengurutan menaik)   

34 orang yang menjawab benar   

• Setelah diperoleh 2 data terurut di kanan serta terjadi reheapify pada heaptree tersisa,  maka isi array (seluruhnya) adalah? 

35, 42, 46, 54, 75, 86, 88, 68, 25, 19  (untuk pengurutan menurun)  75, 68, 54, 42, 19, 46, 35, 25, 86, 88 (untuk pengurutan menaik)   

15 orang yang menjawab benar   

 

Sejumlah data disusun ke dalam binary search tree yang mula‐mula kosong dengan urutan sbb: 

43, 37, 64, 56, 94, 52, 46, 11, 53, 45.  

 

(3)

83 orang yang menjawab benar   

• Leaf node dengan depth terbesar adalah node yang berisi harga? 

45 

85 orang yang menjawab benar   

Sejumlah data disusun ke dalam AVL tree yang mula‐mula kosong dengan urutan sbb: 43, 37, 64,  56, 94, 52, 46, 11, 53, 45.  

• Rotasi pertama terjadi pada penyisipan data manakah? 

52 

92 orang yang menjawab benar   

• Jumlah leaf node adalah? 

72 orang yang menjawab benar   

• Harga pada root adalah adalah? 

52 

56 orang yang menjawab benar   

• Jika dihapus 53, maka apakah yang terjadi? 

(A) DRR,  (B) SRR,  (C) DLR, (D) SLR, (E) Tidak terjadi rotasi  D  (SLR) 

30 orang yang menjawab benar   

Sejumlah data unik disusun ke dalam AVL yang mula‐mula adalah kosong,  

• Jika data berjumlah 10 maka harga‐harga tinggi AVL tree tsb yang mungkin adalah? 

78 orang yang menjawab benar   

• Jika data berjumlah 100 maka harga‐harga tinggi AVL tree tsb yang mungkin adalah? 

6 , 7, 8 

50 orang yang menjawab benar   

• Jika leaf yang terbentuk berjumlah 100 maka harga‐harga tinggi AVL tree tersebut yang  mungkin adalah 

7, 8, 9, 10 

35 orang yang menjawab benar   

Jika sejumlah data disusun ke dalam 2‐3 tree yang mula‐mula kosong. 

• Jika data berjumlah 10 maka harga tinggi 2‐3 tree tersebut yang mungkin adalah? 

57 orang yang menjawab benar   

(4)

• Jika data berjumlah 100 maka harga tinggi 2‐3 tree tersebut yang mungkin adalah? 

4 atau 5 

15 orang yang menjawab benar   

Sejumlah data disusun ke dalam 2‐3 tree yang mula‐mula kosong dengan urutan sbb: 43, 37, 64,  56, 94, 52, 46, 11  

• Root node berisi harga (harga‐harga)? 

52 

57 orang yang menjawab benar   

• Harga 64 berada pada node‐2 atau node‐3? 

Node 2 

82 orang yang menjawab benar   

• Harga 11 berada pada leaf node atau internal node? 

Leaf node 

99 orang yang menjawab benar   

• Jika dilakukan penghapusan 94 maka tinggi 2‐3 tree menjadi? 

48 orang yang menjawab benar   

• Setelah penghapusan 94 tsb root kemudian berisi harga (harga‐harga)? 

43 dan 52 

23 orang yang menjawab benar   

Bagian B (Total 25 point) 

Petunjuk: Jawaban bersifat essay, jawab dengan singkat, jelas namun dengan tulisan rapi untuk  memudahkan pemeriksaan pada lembar jawaban yang disediakan. 

 

Berikut ini suatu class node untuk doubly linked‐list   

class DLLNode {      Object data; 

    DLLNode prev, next; 

    ….  

}   

Suatu class doubly linked list tersusun oleh node‐node DLLNode tersebut tanpa dummy node di  awalnya (sentinel). Node pertama direferensi oleh variabel dengan nama head dan node terakhir  direferensi oleh variabel dengan nama tail sbb.  

 

Class DoublyLinkedList {      DLLNode head, tail; 

    …. 

prev

next

(5)

 

Suatu method dalam class DoublyLinkedList untuk dapat menghapus suatu elemen dalam  doubly linked list tersebut akan disusun dengan diketahui node yang akan dihapus ditunjuk  oleh variabel dengan nama current.  

                   

1. (Nilai 8) Tuliskan deretan perintah (hanya deretan perintah!) untuk menghapuskan node  current tsb untuk kasus dimana (pasti!) current bukan head maupun tail dan linked‐list tidak  kosong (deretan perintah tidak perlu melakukan pemeriksaan untuk kasus‐kasus lain!). 

current.prev.next = current.next; 

current.next.prev = current.prev; 

   

2. (Nilai 17) Dapatkan seluruh kasus (sesedikit mungkin, namun menyeluruh) yang bisa terjadi  selain kasus di atas, serta deretan perintah (seperti no 1 di atas) penghapusan terkait dengan  masing‐masing kasus tersebut (misalnya kasus current == head, kasus kosong, dlsb). 

 

 

if (head == null) {  //kasus  losong    … // tidak melakukan apa‐apa  } else  

if (head == tail) { // kasus 1 node      If (head == current) {  

         head = tail = null; 

    }  }  else  

if (head == current) { // current ada di awal      head = head.next; 

    head.prev = null; 

} else 

if (tail == current) { // current ada di akhir      tail = tail.prev; 

    tail.next = null; 

} else {  // kasus no 1 di atas      current.prev.next = current.next; 

    current.next.prev = current.prev; 

}   

…. ….

current head

tail

(6)

hanya “dikeluarkan” dari linked‐list. Selanjutnya bisa saja node yang ditunjuk current  dihilangkan dengan menambahkan perintah memberi harga null pada variabel current  atau memindahkan current pada node lain dalam linked list.. 

   

Referensi

Dokumen terkait

(menguraikan pembahasan secara lengkap, solusi, model yang digunakan untuk menjawab permasalahan yang didasarkan pada kajian

Salah satu cara untuk melihat kompetensi mahasiswa adalah dengan melihat hasil belajar yang dapat direpresentasikan dengan nilai ujian yang ditempuh.. Ujian

pengecekan apakah tiap node yang dilewati dari leaf hingga kembali ke root, apakah masih balance atau tidak.. Bila seluruh node yang dilewati hingga

Tuliskan representasi fisik (berkait pointer, berkait tabel, atau kontigu) dan struktur data yang akan digunakan untuk implementasi ADT Inventory sesuai dengan

Pada angket no 12 yang menjawab benar atau tahu berjumlah 63 orang atau 63%, kemudian yang menjawab salah/ tidak tahu berjumlah 37 orang atau 37% maka rata-rata

Buatlah listing program PASCAL untuk menghitung Total Gaji yang diterima pegawai tersebut jika data yang diinputkan adalah Gaji Pokok dan Jumlah Jam

Magazine mudah dibaca ”, bahwa yang menjawab Sangat Setuju berjumlah 32 orang dengan persentase 41,5 %, menjawab Setuju berjumlah 30 orang dengan persentase 39%, menjawab

Hanya tiga tree pertama di bawah ini yang full: t x Implementasikan secara recursive method boolean isFullBinaryTreeNode n yang me-return true jika tree yang root-nya n adalah full,