• Tidak ada hasil yang ditemukan

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

N/A
N/A
Protected

Academic year: 2021

Membagikan "GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :"

Copied!
9
0
0

Teks penuh

(1)

UJIAN AKHIR SEMESTER GANJIL 2009/2010

Algoritma dan Struktur Data / CS

HARI : Rabu, 6 WAKTU : 135 menit

DOSEN : TIM

SIFAT : Tutup Buku

1 2

Petunjuk:

• Periksalah kelengkapan halaman soal. Tidak ada toleransi penilaian bagi mahasiswa lengkap halaman soalnya.

• Soal terdiri atas .... bagian dengan rincian: ini.

BAGIAN I. Decimal to Binary Conversion

Tuliskan Procedure Dec2Bin(

melakukan konversi bilangan desimal ke biner

dengan struktur data STACK. Asumsi beberapa primitif beri

Function IsEmpty(S: Stack)

{Mengirimkan TRUE jika stack kosong} Procedure Push(I/O S: Stack,

{Menambahkan X sebagai elemen stack S}

{I.S. S mungkin kosong, tabel penampung elemen stack TIDAK penu F.S. X menjadi TOP yang baru, TOP bertambah 1}

Procedure Pop(I/O S: Stack, {Menghapus X dari stack S} {I.S. S tidak mungkin kosong}

{F.S. X adalah nilai elemen TOP yang lama, TOP berkurang 1} Procedure Dec2Bin(I/O S: Stack;

{Mengkonversi Number kedalam representasi bilangan biner} {I.S. Stack kosong}

{F.S. Menuliskan ke layar hasil konversi Number dalam representasi biner. Stack kosong}

Kamus lokal

Quotient, remainder : integer Hasil : integer

SEMESTER GANJIL 2009/2010

NIM:

Algoritma dan Struktur Data / CS2014

Nama :

6 Januari 2010

Tanda tangan: 135 menit

p Buku

3 4 5

Periksalah kelengkapan halaman soal. Tidak ada toleransi penilaian bagi mahasiswa

bagian dengan rincian: , dan semua dikerjakan pada lembar soal

Decimal to Binary Conversion [9]

rocedure Dec2Bin(I/O S: Stack; input Number: integer

konversi bilangan desimal ke biner & menuliskan hasilnya. Implementasikan dengan struktur data STACK. Asumsi beberapa primitif berikut telah diimplementasikan.

IsEmpty(S: Stack) boolean

{Mengirimkan TRUE jika stack kosong}

S: Stack, input X: integer); {Menambahkan X sebagai elemen stack S}

{I.S. S mungkin kosong, tabel penampung elemen stack TIDAK penu F.S. X menjadi TOP yang baru, TOP bertambah 1}

S: Stack, output X: integer); {Menghapus X dari stack S}

{I.S. S tidak mungkin kosong}

{F.S. X adalah nilai elemen TOP yang lama, TOP berkurang 1} S: Stack; input Number: integer) {Mengkonversi Number kedalam representasi bilangan biner}

{F.S. Menuliskan ke layar hasil konversi Number dalam representasi

integer

T

Periksalah kelengkapan halaman soal. Tidak ada toleransi penilaian bagi mahasiswa yang tidak , dan semua dikerjakan pada lembar soal

I/O S: Stack; input Number: integer) untuk & menuliskan hasilnya. Implementasikan kut telah diimplementasikan.

{I.S. S mungkin kosong, tabel penampung elemen stack TIDAK penuh

{F.S. X adalah nilai elemen TOP yang lama, TOP berkurang 1}

(2)

Algoritma

{proses konversi decimal to binary} While Number <> 0

Quotient  number div 2; 

Remainder  number mod 2; 

Push(S,remainder); Number  quotient; 

{tulis hasil ke layar} While (!IsEmpty(S))

Pop(S,hasil); Output(hasil);

Bagian II. Recursive Problem [9]

Diketahui kamus sebagai berikut:

Type Address : ^node

Type node : <left : address, info : infotype, right : address> Type bintree : address

Tuliskan algoritma rekursif untuk mencari sebuah nilai x pada BST.

Function TreeSearch (P : bintree , x : infotype)  address

{Mengembalikan alamat dari info x jika ditemukan, mengembalikan NIL jika tidak ditemukan}

Kamus

if (P = NIL) OR (x = info(P)) then return P

else if (k < info(P)) then

return TreeSearch (left(P),x) else

return TreeSearch (right(P),x)

Bagian III. Graph [37]

Diberikan sebuah graf berarah dengan 4 buah simpul seperti yang ditunjukkan gambar berikut.

(3)

a. Gambarkan representasi graf di atas dengan menggunakan representasi adjacency list dimana vertex direpresentasikan secara kontigu dan relasi antar vertex dalam representasi berkait pointer [6]

Jawab:

b. Gambarkan representasi graf di atas dengan menggunakan varian dari representasi adjacency list yaitu vertex dan relasi antar vertext dalam representasi berkait pointer.[6]

Jawab:

c. Tuliskan deklarasi struktur data untuk representasi berkait pointer graf di atas [6] Jawab:

Type simpul : pointer to tagSimpul Type sisi : pointer to tagSisi

(4)

Type tagSimpul : < firstsisi : sisi ; infonya di mana? Nextsimpul : simpul>

Type tagSisi : <endpoint : simpul; Nextsisi : sisi> Type graf : simpul

d. Tuliskan algoritma Topological Sort dari graf di atas dengan mengimplementasikan struktur data queue. Asumsi beberapa primitif queue berikut sudah diimplementasikan. [15]

Procedure CreateEmpty(Output Q: Queue); I.S sembarang

F.S sebuah Q kosong terbentuk Proses. Membuat sebuah Q kosong Function IsEmpty(Q:Queue)  boolean

Mengembalikan nilai TRUE jika Q kosong, FALSE jika tidak Procedure Add(I/O Q: Queue, x: vertex);

I.S Q mungkin kosong, tabel penampung elemen Q tidak penuh F.S x menjadi tail yang baru, tail “maju”

Procedure Del(I/O Q:Queue, output x:vertex); I.S Q tidak mungkin kosong

F.S X adalah nilai elemen head pada I.S Jawab:

Procedure TopSort(input G:graph; output TopS: Tabel)

I.S Graph G terdefinisi & indegrees tiap vertex telah disimpan dalam tabel indegree yang didefinisikan secara global.

F.S Urutan node hasil pengurutan tersimpan dalam tabel TopS Kamus Q: Queue; i: integer; v,w: vertex; Algoritma CreateEmpty(Q); for each vertex v do

if indegree[v]=0 then Add(Q,v);

If (IsEmpty(Q)) then

Output(“Graph has a cycle”) Else

i=1; Repeat

(5)

Del(Q,v); TopS[i]=v; i=i+1;

for each w adjacent to v do indegree[w]=indegree[w]-1 if indegree[w]=0 then

add(Q,w); Until (IsEmpty(Q))

e. Tuliskan hasil urutan topologis dari graf di atas [4] Jawab:

4-1-2-3-5

Bagian IV. Queue [24]

Perhatikan ilustrasi queue di bawah ini.

a. Tuliskan kamus yang merepresentasikan queue di atas [6].

Kamus Data

type ElementQueue : <Nama: string;

nextQueue: adrQueue> type adrQueue : ^ElementQueue

type QQueue : <FrontQueue: adrQueue; RearQueue:adrQueue>

b. Tuliskan algoritma untuk melayani antrian yang sudah ada [9]

Procedure QueueRemove(Input/Output QQ: QQueue)

{Mengambil sebuah element pada Queue dan menampilkan Info Namanya dengan aturan FIFO

I.S. Queue Terdefinisi dan mungkin kosong

F.S. Queue berkurang sebuah Elemen atau mungkin menjadi Kosong, jika Queue yang akan dilayani ternyata Kosong, maka akan menampilkan Queue Masih Dalam Keadaan Kosong }

Kamus :

P : AdrQueue; Algoritma

(6)

P  QQ.FrontQueue 

Output (P^.Nama)

QQ.FrontQueue  P^.nextQueue

Dealokasi (P)

c. Tuliskan algoritma untuk menampilkan seluruh elemen yang ada pada Queue tersebut [9]

Procedure QueueDisplay(Input QQ: QQueue) {Menampilkan seluruh element pada Queue I.S. Queue Terdefinisi dan mungkin kosong

F.S. Seluruh Element Queue Ditampilkan Info Namanya } Kamus : P : AdrQueue; Algoritma P  QQ.FrontQueue  While (P <> Nil) Output (P^.Nama) P  P^.nextQueue 

Bagian V. Heap Tree [21]

Diketahui kumpulan integer tersimpan dengan struktur Heap, dengan representasi Berkait Pointer. Nilai maksimum menempati posisi root, dan diasumsikan tiap nilai adalah unik.

a. Buatlah deklarasi struktur Heap tersebut [6]

type adrHeap : Pointer to Elmt

type Elmt : <info : integer, Left : adrHeap, Right : adrHeap> type Heap : adrHeap

H : Heap

b. Buatlah prosedur insert pada pohon Heap, dengan menggunakan stack dan queue yang masing-masing

elemennya bertipe adrHeap. Diketahui pada kamus global telah terdefinisi sejumlah primitif [15]: {Kamus Global}

Procedure CreateEmptyS (Output S : Stack) {Membuat sebuah stack kosong}

(7)

{I.S : sembarang}

{F.S : sebuah stack S kosong siap dipakai terdefinisi} Function StackEmpty (S: Stack)  boolean 

{Test stack kosong : mengirim true jika tumpukan kosong, false jika tumpukan tidak kosong}

Procedure PushS (Input/Output S : Stack Input E : Infotype)

{Menambahkan sebuah elemen baru pada TOP, dengan elemen yang diketahui informasinya}

{IS. Terdefinisi stack S mungkin kosong, dan elemen E FS. Info E ditambahkan sebagai elemen Top dari S}

Procedure PopS (Input/Output S : Stack; Output E : Infotype) {I.S : stack tidak kosong}

{F.S : info elemen TOP disimpan pada E, alamat TOP yang lama didealokasi} {Menghapus elemen stack, stack tidak boleh kosong dan mungkin setelah penghapusan stack menjadi kosong}

Procedure CreateEmptyQ (output Q : Queue) {IS. –

FS. Terdefinisi Queue kosong}

Function QueueEmpty (Q : Queue) boolean 

{Test terhadap Queue, True jika kosong, False jika tidak} Procedure AddQ (input/output Q : Queue; input E : infotype) {IS. Terdefinisi queue Q mungkin kosong, dan elemen E FS. Info E ditambahkan sebagai elemen pertama dari Q} Procedure DelQ (input/output Q : Queue; output E : infotype) {IS. Terdefinisi queue Q tidak kosong

FS. E berisi info elemen yang dihapus dari Q, elemen pertama didealokasi} Procedure Tukar(input/output X,Y : integer)

{IS. Terdefinisi nilai X dan Y} {FS. Nilai X = Y, dan Y = X} Jawaban :

Procedure Insert_Heap (input/Output H : Heap, input X : adrHeap) {IS. Terdefinisi pohon Heap H mungkin kosong, dan elemen X } {FS. Elemen X ditambahkan pada pohon Heap}

Kamus

P : adrHeap

V, Child, Parents :adrHeap Q : Queue; S : Stack

(8)

Algoritma

{kasus kosong, Elemen X menjadi Root} If (H=Nil) then

H  X 

Else

{Meletakkan Elemen X pada node terakhir dari pohon Heap} CreateEmptyQ(Q) {Create Empty Queue}

CreateEmptyS(S) {Create Empty Stack}

Stop  False {Inisialisasi variabel boolean} P  H {P menunjuk ke H}

AddQ(Q,P)

While Not Stop do DelQ(Q,P)

If (Left(P)≠Nil and Right(P)≠Nil) then AddQ(Q,Left(P))

AddQ(Q,Right(P)) PushS(S,P)

Kok ngga ada P = Next(P)?? else

Stop  True 

{Stop = True, (Left(P)=Nil) or (Right(P) =Nil) } If Left(P)=Nil then Left(P) X  Else Right(P)  X  PushS(S,P)

{Heapifying : membentuk struktur Heap, nilai parents > nilai children}

Child  X 

Stop  False 

While Not StackEmpty(S)and not Stop do PopS(S,P)

Parents  P

If Left(Parents) = Child or Right(Parents)=Child then If Info(Parents) < Info(Child) then

Tukar(Info(Parents),Info(Child)) Child  Parents  else Stop  True  {StackEmpty or Stop}

(9)

Referensi

Dokumen terkait

Pada bab ini penulis akan menguraikan penjelasan yang berkaitan dengan materi yang berjudul penerapan pendekatan kontekstual untuk meningkatkan pemahaman siswa tentang

Penelitian ini bertujuan untuk mendeskripsikan: 1) keterampilan berbicara yang dilihat dari faktor kebahasaan dan nonkebahasaan 2) implementasi model

Akan tetapi hakim tetap pada Undang-Undang yang berlaku selama tidak ada perjanjian yang mengikat antara keduanya dalam membagi harta bersama selama dalam

Organisasi sosial (social institution) dan pendidikan adalah suatu lembaga yang berkaitan dengan cara bagaimana seseorang berhubungan dengan orang lain,

Para ulama ushul fikih menetapkan bahwa rukun Qiyas itu aada empat, yaitu ashl (wadah hukum yang ditetapkan melalui nash atau ijma’) far’u (kasus yang akan ditentukan

Desa wisata adalah desa yang memiliki potensi keunikan dan daya tarik wisata yang khas, baik berupa karakter fisik lingkungan alam pedesaan maupun kehidupan sosial

Our proposed methodology consisted of the viewpoint decision for point-based rendering, the point- based rendering, the normal vector clustering for surface

Kecamatan Ngusikan merupakan kecamatan baru, yaitu merupakan pemekaran dari Kecamatan Kudu berdasarkan Peraturan Daerah Kabupaten Jombang No. Tujuan dari penelitian