Bab 7 : Carian. proses untuk memeriksa satu atau serangkaian unsur untuk mendapatkan data yang dicari. Carian / gelintaran

Similar documents
UNIVERSITI SAINS MALAYSIA. CCS511 Evolutionary Computing [Perkomputeran Berevolusi]

RUZIAH AHMAD BAHAGIAN PENGKATALOGAN PERPUSTAKAAN TUANKU BAINUN, UPSI

MSG 356 Mathematical Programming [Pengaturcaraan Matematik]

UNIVERSITI SAINS MALAYSIA. CCS511 Evolutionary Computing [Perkomputeran Berevolusi]

UNIVERSITI SAINS MALAYSIA. CCS513 Computer Vision and Image Analysis [Penglihatan Komputer dan Analisis Imej]

Jawab soalan mengikut arahan yang diberikan dalam setiap bahagian. Questions should be answered according to the instructions given in each section.

SULIT 3472/1 MAJLIS PENGETUA SEKOLAH-SEKOLAH MALAYSIA (MPSM) CAWANGAN KELANTAN PEPERIKSAAN PERCUBAAN SPM TINGKATAN LIMA

SULIT 3472/1. Answer all questions. Jawab semua soalan.

Arahan : Jawab semua soalan. Instructions: Answer all questions.

MST 562 Stochastic Processes [Proses Stokastik]

UNIVERSITI SAINS MALAYSIA. CIT562 Bioinformatics Computing [Perkomputeran Bioinformatik]

SCES2242/ SCES2434 : KIMIA POLIMER/ KIMIA POLIMER I POLYMER CHEMISTRY/ POLYMER CHEMISTRY I

MSG 389 Engineering Computation II [Pengiraan Kejuruteraan II]

COVRE OPTIMIZATION FOR IMAGE STEGANOGRAPHY BY USING IMAGE FEATURES ZAID NIDHAL KHUDHAIR

UNIVERSITI SAINS MALAYSIA. CPT115 Mathematical Methods for Computer Science [Kaedah Matematik bagi Sains Komputer]

SYSTEM IDENTIFICATION MODEL AND PREDICTIVE FUNCTIONAL CONTROL OF AN ELECTRO-HYDRAULIC ACTUATOR SYSTEM NOOR HANIS IZZUDDIN BIN MAT LAZIM

UNIVERSITI SAINS MALAYSIA. Peperiksaan Semester Pertama Sidang Akademik 2004/2005. Oktober CPT102 - Struktur Diskret

INSTRUCTION: This section consists of SIX (6) structured questions. Answer FOUR (4) questions only.

JANGAN BUKA KERTAS SOALAN INI SEHINGGA DIBERITAHU

CPT115 Mathematical Methods for Computer Sciences [Kaedah Matematik bagi Sains Komputer]

EEM 423 KEJURUTERAAN KEBOLEHPERCAYAAN

INSTRUCTION: This section consists of FOUR (4) structured questions. Answer ALL questions.


MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

PEPERIKSAAN PERCUBAAN SPM 2014 ADDITIONAL MATHEMATICS

DCC5143: FLUID MECHANICS

EEE REKABENTUK SISTEM KAWALAN

UNIVERSITI SAINS MALAYSIA. CPT443 Automata Theory & Formal Languages [Teori Automata & Bahasa Formal]

UNIVERSITI SAINS MALAYSIA. CPT112 Discrete Structures [Struktur Diskret]

MAT 223 DIFFERENTIAL EQUATIONS I [Persamaan Pembezaan I]

UNIVERSITI SAINS MALAYSIA EEE 354 SISTEM KAWALAN DIGIT

PANITIA BIOLOGI DAERAH SEPANG PEPERIKSAAN PERCUBAAN SIJIL PELAJARAN MALAYSIA BIOLOGI KERTAS 3 Satu jam tiga puluh minit


MULTIMEDIA COLLEGE JALAN GURNEY KIRI KUALA LUMPUR

EME 411 Numerical Methods For Engineers [Kaedah Berangka Untuk Jurutera]

Section A [28 marks / markah] Answer all question Jawab semua soalan

KOT 222 Organic Chemistry II [Kimia Organik II]

UNIVERSITI SAINS MALAYSIA EEE 354 SISTEM KAWALAN DIGIT

EEE 208 TEORI LITAR II

INSTRUCTION: This paper consists of SIX (6) essay questions. Answer any FOUR (4) questions only.

KOLEJ MULTIMEDIA JALAN GURNEY KIRI KUALA LUMPUR


MSG 389 Engineering Computation II [Pengiraan Kejuruteraan II]

UNIVERSITI MALAYSIA SARAWAK KOTA SAMARAHAN SARAWAK FIFTH, SIXTH, EIGHTH & NINTH SEMESTER EXAMINATION, 2013 SESSION MTH2033 DISCRETE MATHEMATICS

UNIVERSITI SAINS MALAYSIA

INSTRUCTION: This section consists of FOUR (4) structured questions. Answer ALL questions.

SMK KHIR JOHARI SG SUMUN PEPERIKSAAN PERCUBAAN SPM 2018 TINGKATAN 5

INSTRUCTION: This section consists of FOUR (4) structured questions. Answer TWO (2) questions. only.

INSTRUCTION: This section consists of SIX (6) structured questions. Answer FOUR (4) questions only.

SCES2242/ SCES2434/SIC2005 : KIMIA POLIMER/ KIMIA POLIMER I POLYMER CHEMISTRY/ POLYMER CHEMISTRY I

LAND LAW AND SURVEY REGULATION (SGHU 3313)

SULIT /1. Answer all questions. Jawab semua soalan.

MULTISTAGE ARTIFICIAL NEURAL NETWORK IN STRUCTURAL DAMAGE DETECTION GOH LYN DEE

Kertas soalan ini mengandungi dua bahagian, Bahagian A dan Bahagian B. This paper contains two sections, Section A and Section B.

A COMPUTATIONAL FLUID DYNAMIC FRAMEWORK FOR MODELING AND SIMULATION OF PROTON EXCHANGE MEMBRANE FUEL CELL HAMID KAZEMI ESFEH

SULIT 3472/1. Nama:.. Tingkatan: 3472/1 NO. KAD PENGENALAN Matematik Tambahan PROGRAM PENINGKATAN PRESTASI SAINS DAN MATEMATIK 2009

SULIT /1. Answer all questions. Jawab semua soalan.

PEPERIKSAAN PERCUBAAN SIJIL PELAJARAN MALAYSIA 2006

EMH 211 Thermodynamics [Termodinamik]

SULIT 3472/1. DENGAN KERJASAMA Ogos/September PERSIDANGAN KEBANGSAAN PENGETUA-PENGETUA SEKOLAH MENENGAH MALAYSIA CAWANGAN KELANTAN

Section A / Bahagian A [40 marks / 40 markah] Answer all questions. Jawab semua soalan.

INTEGRATED MALAYSIAN METEOROLOGICAL DATA ATMOSPHERIC DISPERSION SOFTWARE FOR AIR POLLUTANT DISPERSION SIMULATION

(Kertas soalan ini mengandungi 11 soalan dalam 6 halaman yang dicetak) (This question paper consists of 11 questions on 6 printed pages)

EEE 453 REKABENTUK SISTEM KAWALAN

Form 1 Mid year. 2 Find the value of each of the following. Cari nilai bagi setiap yang berikut. (a)

INFORMATION FOR CANDIDATES MAKLUMAN UNTUK CALON

This paper consists of SIX (6) structured questions. Answer any FOUR (4) questions.

FRAGMENT REWEIGHTING IN LIGAND-BASED VIRTUAL SCREENING ALI AHMED ALFAKIABDALLA ABDELRAHIM

EEU 104 TEKNOLOGI ELEKTRIK

ESA 102/2 Pengkomputeran Kejuruteraan Aeroangkasa Computing In Aerospace Engineering

UNIVERSITI SAINS MALAYSIA. Second Semester Examination Academic Session 2004/2005. March 2005 MGM ANALYSIS [ANA LISIS]

MAT Calculus [Kalkulus]

(Kertas soalan ini mengandungi 11 soalan dalam 6 halaman yang dicetak) (This question paper consists of 11 questions on 6 printed pages)

Jawab soalan mengikut arahan yang diberikan dalam setiap bahagian. Questions should be answered according to the instructions given in each section.

Answer all questions in this section Jawab semua soalan dalam bahagian ini

A STUDY ON THE CHARACTERISTICS OF RAINFALL DATA AND ITS PARAMETER ESTIMATES JAYANTI A/P ARUMUGAM UNIVERSITI TEKNOLOGI MALAYSIA

PEPERIKSAAN PERCUBAAN SIJIL PELAJARAN MALAYSIA /3

ANALISIS BIVARIAT DATA NUMERIK DAN NUMERIK Uji Korelasi dan Regresi

LAPORAN TAHUNAN ANNUAL REPORT 2002

EME 451/3 Computational Fluid Dynamics Pengkomputeran Dinamik Bendalir

UNIVERSITI SAINS MALAYSIA EEM 352 REKABENTUK MEKATRONIK II

INSTRUCTION: This section consists of SIX (6) structured questions. Answer FOUR (4) questions only.

MAT 100 Foundation Mathematics [Asas Matematik]

Cari hasil tambah dua kad antara nombor terbesar dan nombor terkecil? Find the sum of two cards with the largest and the smallest number?

MATEMATIK KERTAS 1 (1449/1) SET 7

SCES2250 : SPEKTROSKOPI MOLEKUL & INTERPRETASI MOLECULAR SPECTROSCOPY INTERPRETATION

MAA 111 Algebra for Science Students [Aljabar untuk Pelajar Sains]

... [1 mark] pembolehubah bergerakbalas the responding variable. ... [1 mark] pembolehubah yang dimalarkan constant variable. ...

SCES2250 : SPEKTROSKOPI MOLEKUL & INTERPRETASI MOLECULAR SPECTROSCOPY & INTERPRETATION

Persembahan-3 Hasil Darab Langsung dengan Permasalahan Gambarnya Boleh Ditentukan

EEE 350 SISTEM KAWALAN

OPTIMAL CONTROL BASED ON NONLINEAR CONJUGATE GRADIENT METHOD IN CARDIAC ELECTROPHYSIOLOGY NG KIN WEI UNIVERSITI TEKNOLOGI MALAYSIA

EMH 451/3 Numerical Methods For Engineers Kaedah Berangka Untuk Jurutera

MAT 101 Calculus [ Kalkulus]

KOT 222 Organic Chemistry II [Kimia Organik II]

INDEX SELECTION ENGINE FOR SPATIAL DATABASE SYSTEM MARUTO MASSERIE SARDADI UNIVERSITI TEKNOLOGI MALAYSIA

SIJIL PELAJARAN MALAYSIA /3 KIMIA Kertas 3 1 ½ jam Satu jam tiga puluh minit

SCES3362 : TEKNIK-TEKNIK INSTRUMENTASI DALAM KIMIA INTRUMENTAL TECHNIQUES IN CHEMISTRY

MGM 531 Euclidean Geometry [Geometri Euklidan]

SULIT /1 Answer all questions. Jawab semua soalan.

Transcription:

Bab 7 : Carian Carian / gelintaran proses untuk memeriksa satu atau serangkaian unsur untuk mendapatkan data yang dicari proses untuk menentukan sama ada suatu unsur itu ahli kpd suatu set cubaan untuk mencari rekod di dalam fail Setiap rekod mempunyai: a) medan data b) medan kekunci - kekunci sekumpulan aksara @ nombornombor yg digunakan sebagai pengenal rekod (contoh: nombor I/C, nombor pekerja dan sbgnya). Tujuan : untuk mencapai maklumat yang telah disimpan. Jadual 1 menunjukkan contoh sebuah fail pekerja. NoPekerja NoKadPengenalan Nama Jawatan 1111 701111-11-1234 Ahmad Faiz Azhar Pengaturcara 122 800202-02-2323 Mohd. Azim Mohd. Razi Kerani 211 811003-03-3134 Nurina Raidah Abdul Aziz Juruanalisa Sistem Jadual 1: Rekod pekerja Teknik carian juga perlu untuk mencari penyelesaian kepada suatu masalah. Dalam AI, carian adalah proses untuk memilih satu penyelesaian daripada beberapa kemungkinan penyelesaian. Di antara teknik carian yang popular ialah : o carian berjujukan atau carian linear o carian perduaan atau carian binari o carian pohon perduaan atau carian pohon binari o cincangan dan pengindeksan - carian bagi jumlah data yang besar Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 1 )

Cincangan adalah teknik menguruskan data dalam fail. Contoh : untuk menentukan lokasi setiap rekod yang berada dalam satu jadual berdasarkan medan kekunci. Ia adalah teknik carian terus ke dalam fail berasaskan kekunci rekod dengan memetakan nilai kekunci kpd rekod dalam fail. Pengindeksan adalah kaedah untuk aplikasi berasaskan cakera. Teknik carian ini menggabungkan ciri-ciri kebaikan pada teknik carian berjujukan dan cincangan. Pengindeksan adalah teknik carian berstruktur bagi mencapai rekod yang disimpan dalam fail jujukan berindeks. Dalam teknik ini, fail terbahagi kepada tiga kawasan utama iaitu kawasan indeks, kawasan storan data dan kawasan limpahan. Alamat rekod-rekod disimpan ditempatkan dalam kawasan indeks bagi fail berkenaan. Teknik ini membenarkan nilai kekunci yang sama lebih dari satu. 7.1 Carian Berjujukan Kaedah carian ini digunakan untuk mencari data dalam senarai / jadual, iaitu implimentasi tts atau senarai berpaut. Setiap unsur dalam senarai akan disemak satu persatu secara berjujukan, bermula daripada unsur pertama sehingga unsur terakhir atau unsur yang dikehendaki ditemui. Carian berjujukan adalah cara termudah tetapi lambat kerana ia membandingkan kekunci yang dicari dengan setiap unsur dalam senarai. Carian dianggap berjaya apabila kekunci yang dicari sepadan dengan kekunci dalam senarai. Jika tiada kekunci yang sepadan, maka proses carian akan diteruskan sehingga ke unsur senarai yang terakhir dan carian dianggap gagal. Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 2 )

void carian::berjujukan (jenis_data kekunci_carian, int saiz_tatasusunan, const senarai_eleman tatasusunan[], char status[], int *indeks ) { //Pembolehubah setempat int p; strcpy(status, GAGAL ); //Nilai awal status carian *indeks = -1; //Nilai awal indeks tatasusunan for (p = 0; p < saiz_tatasusunan; p++) { if (kekunci_carian == tatasusunan[p]) { *indeks = p; //Umpukan indeks tatasusunan terkini strcpy(status, BERJAYA ); //Menukar status break; // end if // end for Atur cara 1: Fungsi carian. Gelung for akan berulang sehingga : o data yang dikehendaki ditemui atau o kursor sampai ke unsur tts yang terakhir. Jika nilai yang dicari berada pada unsur yang kedua, maka gelung carian berulang sebanyak 2 kali. Jika nilai yang dikehendaki berada pada elemen terakhir atau nilai tersebut tiada dalam senarai unsur, maka gelung for akan berulang mengikut bilangan unsur atau saiz tatasusunan. Bagi jumlah rekod yang besar, kaedah ini memakan masa yang lama kerana kekunci carian akan semua unsur senarai. Satu cara yang boleh mengurangkan masa carian, ialah dengan menyimpan data dalam senarai yang terisih. Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 3 )

Rajah 2 menunjukkan carian menggunakan fungsi carian. Nilai yang dicari (kekunci_carian) = 22 dan saiz tts = 5. 1 2 3 tatasusunan 11 33 22 55 44 tatasusunan 11 33 22 55 44 tatasusunan 11 33 22 55 44 Nilai awalan bagi pembolehubah status, indeks dan unsur tatasusunan Laluan gelung = 1 Kekunci_carian akan indeks pertama tatasusunan Laluan gelung = 2 Kekunci_carian akan indeks kedua tatasusunan 4 status BERJAYA indeks 2 tatasusunan 11 33 22 55 44 Rajah 1: Gambaran perlaksanaan fungsi carian Laluan gelung = 3 Kekunci_carian indeks ketiga tatasusunan Kekunci yang dicari ditemui Status bertukar kepada BERJAYA Ulangan gelung dihentikan dengan penyata break Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 4 )

7.3 Carian Berjujukan Dari Senarai Terisih Kecekapan algoritma carian berjujukan boleh ditingkatkan dengan menggunakan senarai terisih. Kekunci carian akan unsur senarai sehingga : o kekunci yang dicari ditemui atau o nilai kekunci yang dicari lebih kecil dari unsur senarai terkini (jika unsur senarai diisih secara menaik). Kriteria ini penting kerana ia boleh menjimatkan masa larian aturcara dengan mengurangkan bilangan ulangan gelung jika kekunci yang dicari tiada dalam senarai. void carian::berjujukan_terisih (jenis_data kekunci_carian, int saiz_tatasusunan, const senarai_eleman tatasusunan[], char status[], int *indeks ) { int p; //Pembolehubah setempat strcpy(status, GAGAL ); //Nilai awal status carian *indeks = -1; //Nilai awal bagi indeks tts for (p = 0; p < saiz_tatasusunan; p++) { if (kekunci_carian < tatasusunan[p]) break;//gelung dihentikan apabila //nilai kekunci carian lebih //kecil dari nilai elemen semasa tts else if (kekunci_carian == tatasusunan[p]) { *indeks = p; //Umpukan indeks tts terkini strcpy(status, BERJAYA ); //Menukar status break; Atur cara 2: Fungsi carian bagi senarai Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 5 )

Rajah 3 menunjukkan perlaksanaan fungsi carian bagi senarai terisih (Atur cara 2). Nilai yang dicari kekunci_carian = 25 dan saiz tatasusunan = 5. 1 2 3 tatasusunan 11 22 33 44 55 kekunci_carian 25 tatasusunan 11 22 33 44 55 kekunci_carian 25 tatasusunan 11 22 33 44 55 Nilai awalan bagi pembolehubah status, indeks dan elemen tatasusunan Laluan gelung = 1 Kekunci_carian akan indeks pertama tatasusunan Laluan gelung = 2 Kekunci_carian akan indeks kedua tatasusunan kekunci_carian 25 4 indeks 2 tatasusunan 11 22 33 44 55 kekunci_carian 25 Laluan gelung = 3 Kekunci_carian indeks ketiga tatasusunan Nilai kekunci_carian lebih kecil dari unsur tatasusunan Ulangan gelung dihentikan dengan penyata break Rajah 2: Gambaran perlaksanaan fungsi carian pada senarai terisih. Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 6 )

Dalam perlaksanaan Aturcara 2, jika senarai tidak terisih, gelung akan berulang mengikut bilangan unsur senarai. Dalam kes Rajah 2, jika senarai tidak terisih, gelung berulang sebanyak 5 kali. Oleh kerana senarai tersebut telah diisih secara menaik, ulangan gelung hanya 3 tiga kali. Jika senarai yang diisih secara menurun, kita hanya perlu menukarkan operator lebih kecil < kepada operator lebih besar > pada penyataan for. 7.4 Carian Perduaan Carian Perduaan : carian bagi senarai terisih Bermula dgn perbandingan kekunci yang dicari dgn unsur tengah senarai (indeks tengah tts, indeks = TENGAH) Jika nilai sepadan, carian berjaya. Jika kekunci yang dicari < unsur tengah senarai, carian menumpu kpd unsur2 di antara unsur pertama sehingga unsur sebelum unsur tengah senarai (TENGAH - 1). Unsur2 lain (di antara TENGAH + 1 hingga indeks terakhir) diabaikan Jika kekunci yang dicari belum ditemui, dapatkan indeks TENGAH kedua (unsur tengah di antara unsur pertama dgn unsur TENGAH 1). Bandingkan dgn kekunci yg dicari, jika nilainya lebih besar, carian menumpu kpd unsur2 di antara TENGAH kedua dgn TENGAH pertama Proses ini berulang sehingga unsur yang dicari ditemui atau carian sampai kpd unsur terakhir dlm subset yg direntasi. Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 7 )

Kekunci_carian 35 Senarai_Tatasusunan 11 22 33 44 55 66 77 Rajah 3: Senarai unsur terisih. Rajah 3 menunjukkan senarai yang terisih secara menaik. Carian perduaan bermula dengan mendapatkan indeks TENGAH bagi senarai. Andaikan kekunci_carian = 35. TENGAH = (0 + 6) / 2 = 3 {Indeks TENGAH yang pertama Kekunci_carian (35) unsur pada indeks ke 3 dalam senarai tatasusunan (44). Oleh kerana nilai kekunci_carian < TENGAH, maka carian menumpu kepada unsur-unsur di antara indeks ke-1 dan indeks ke-3 (indeks pertama hingga TENGAH - 1). Unsur-unsur pada indeks ke-5 dan ke-7 diabaikan (indeks TENGAH + 1 hingga indeks terakhir). Proses untuk mendapatkan indeks TENGAH dilakukan sekali lagi kerana nilai yang dicari belum ditemui dan belum mencapai elemen terakhir subset yang direntasi. TENGAH = (0 + 2) / 2 = 1 {Indeks TENGAH yang kedua Kekunci_carian akan unsur pada indeks ke 1 (22). Oleh kerana nilai kekunci_carian > TENGAH, maka carian akan menumpu kepada unsur-unsur di antara indeks TENGAH yang pertama dan indeks TENGAH yang kedua sahaja, iaitu indeks ke 2 dalam senarai tatasusunan. TENGAH = (2 + 2) / 2 = 2 {Indeks TENGAH yang ketiga Unsur pada indeks ketiga dalam senarai tatasusunan adalah tidak setara dengan nilai kekunci carian. Sedangkan, proses carian telah sampai ke unsur terakhir dalam senarai. Oleh itu proses carian ditamatkan dan carian ini dianggap gagal. Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 8 )

void carian_perduaan (jenis_data kekunci_carian, int saiz_tatasusunan, const senarai_eleman atasusunan[], char status[], int *indeks) { int TENGAH, KIRI, KANAN; strcpy(status, GAGAL ); //Nilai awal status carian *indeks = -1; KIRI = 0; KANAN = saiz_tatasusunan 1; while ((KIRI <= KANAN) && (strcmp(status, GAGAL ) == 0)) { //Mendapatkan indeks tengah TENGAH = (KIRI + KANAN) / 2; if (tatasusunan[tengah] == kekunci_carian) { *indeks = TENGAH; strcpy(status, BERJAYA ); else if (tatasusunan[tengah] > kekunci_carian) KANAN = TENGAH 1; //Carian disebelah kiri senarai else KIRI = TENGAH + 1; //Carian disebelah kanan senarai Atur cara 3: Carian perduaan bagi tts yang diisih secara menaik. Rajah 4 menunjukkan perlaksanaan fungsi perduaan Aturcara 3. Nilai yang dicari (kekunci_carian) = 22 dan saiz tts = 10. Untuk mendapatkan senarai yang diisih secara menaik, operator lebih besar > perlu ditukar kepada operator lebih kecil < seperti berikut, : else if (tatasusunan[tengah] > kekunci_carian) KANAN = TENGAH 1; : Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 9 )

1 [5] [6] [7] [8] [9] tatasusunan 12 14 16 18 20 22 24 26 28 30 KIRI KIRI 0 KANAN 9 TENGAH 4 TENGAH KANAN 2 [5] [6] [7] [8] [9] tatasusunan 12 14 16 18 20 22 24 26 28 30 KIRI 5 KIRI TENGAH KANAN KANAN 9 TENGAH 7 3 [5] [6] [7] [8] [9] tatasusunan 12 14 16 18 20 22 24 26 28 30 KIRI 5 KIRI TENGAH KANAN KANAN 6 TENGAH 5 Rajah 4: Jujukan perlaksanaan carian perduaan. Disediakan oleh: Zalmiyah Zakaria, FSKSM, UTM ( m/s: 10 )