1
BAB XIII MENGECEK KESAMAAN DUA VEKTOR
Dalam banyak kesempatan, seringkali kita memerlukan operasi untuk mengecek kesamaan di antara dua kelompok data. Dengan memanfaatkan ide dalam beberapa algoritma prosedur yang telah dibahas sebelumnya, kita dapat mengembangkan algoritma prosedur untuk menyelesaikan permasalahan tersebut.
Sebelum mengembangkan prosedur penyelesaiannya, sebaiknya perlu diketahui terlebih dahulu kondisi masing-masing vektor yang akan dicek kesamaannya. Hal penting yang harus diketahui pertama kali adalah tentang cacah elemen dalam masing-masing vektor. Dalam kondisi dimana cacah elemen data dalam vektor pertama tidak sama dengan cacah elemen data dalam vektor kedua, maka kita dapat memastikan bahwa kedua vektor tersebut adalah tidak sama. Sebaliknya, jika cacah elemen data dalam kedua vektor yang akan dicek adalah sama, maka ada baiknya kita perlu mengetahui juga apakah kondisi data dalam masing-masing vektor telah berada dalam kondisi urut atau masih acak. Dalam kondisi dimana cacah elemen data dalam vektor-vektor cukup banyak, maka langkah mengurutkan terlebih dahulu setiap elemen pada masing-masing vektor merupakan sebuah ide yang baik, daripada langsung mengecek kesamaannya.
Prosedur pengurutan data telah dibahas pada Bab VI, sehingga pembahasan di sini hanya difokuskan pada prosedur pengecekan kesamaan dua vektor saja. Bagian berikut ini akan memberikan dua alternatif penyelesaian, yaitu pengecekan kesamaan dua vektor yang masih acak dan pengecekan dua vektor yang telah urut.
2
13.1. Mengecek Kesamaan Dua Vektor Tidak Urut
Untuk mengecek kesamaan dua vektor yang masing-masing berada dalam kondisi tidak urut dapat dijelaskan sebagai berikut ini. Mula-mula kita harus mengetahui cacah elemen data pada masing-masing vektor. Di sini diasumsikan bahwa kedua vektor yang akan dicek kesamaannya mempunyai cacah elemen data yang sama, yaitu sebanyak N elemen data. Jika setiap vektor diberi nama, masing-masing adalah vektor A dan vektor B, maka salah satu vektor dapat ditetapkan sebagai acuan untuk membandingkan setiap elemen data vektor lain yang akan dicek kesamaannya. Sebagai contoh, berikut ini diberikan dua buah vektor tidak urut yang akan dicek kesamaannya. Dalam contoh di sini, yang digunakan sebagai acuan adalah vektor A. Elemen-elemen masing-masing vektor adalah sebagai berikut :
A
:
2
9
7
4
6
8
B
:
9
5
4
2
8
7
Proses pengecekan kesamaan vektor A dan B di atas adalah dilakukan dengan cara sebagai berikut ini. Mula-mula elemen pertama dalam vektor A, yaitu 2 dibandingkan dengan setiap elemen pada vektor B dimulai pada urutan ke-1, ke-2, ke-3, dan seterusnya hingga ditemukan harga yang sama. Dalam contoh di atas, 2 akan ditemukan pada urutan ke-4 dalam vektor B. Sehingga dalam vektor B akan terjadi perubahan urutan data, yaitu 2 dalam B akan ditempatkan pada urutan ke-1, dan data ke-1 yaitu 9 akan ditempatkan pada urutan ke-4.
Pada langkah berikutnya, data urutan ke-2 dalam vektor A, yaitu 9 akan dibandingkan dengan semua elemen data pada vektor B dimulai pada urutan ke-2, ke-3, dan seterusnya hingga ditemukan harga yang sama. Data 9 akan ditemukan pada urutan ke-4 dalam vektor B. Dengan demikian, 9 dalam vektor B akan ditukarkan tempatnya yaitu menempati pada urutan ke-2, dan data ke-2 yaitu 5 akan ditempatkan pada urutan ke-4.
3
Proses seperti di atas akan dilaksanakan terus-menerus hingga semua data dalam vektor A selesai dibandingkan dengan semua elemen dalam vektor B. Jika dijumapai suatu kondisi bahwa ada elemen dalam vektor A tidak pernah ditemukan dalam vektor B, maka dapat disimpulkan bahwa vektor A tidak sama dengan vektor B dan proses dapat dihentikan. Vektor A adalah sama dengan vektor B apabila setiap elemen data dalam vektor A akan selalu dijumpai dalam vektor B.
Dalam contoh di atas, proses akan berhenti setelah iterasi perulangan perbandingan elemen-elemen vektor A dan B berlangsung 5 kali. Elemen ke-5 dalam vektor A adalah 6, elemen tersebut tidak pernah ditemukan dalam vektor B, sehingga dapat disimpulkan bahwa vektor A tidak sama dengan vektor B. Selanjutnya elemenelemen vektor A yang lain tidak perlu dibandingkan dengan elemen-elemen vektor B. Sekalipun, elemen ke-6 dalam vektor A akan ditemukan dalam vektor B, namun elemen tersebut tidak perlu dicek lagi.
Untuk menuliskan algoritma prosedur pengecekan kesamaan dua vektor tidak urut, berikut ini akan digunakan beberapa variabel bantu. A dan B adalah menyatakan nama-nama vektor yang akan dicek kesamaannya yang masing-masing memiliki cacah elemen data sebanyak N. I dan J adalah menyatakan variabel pencacah dan sekaligus berfungsi sebagai indeks untuk mengidentifikasikan setiap elemen data. Sedangkah BANTU merupakan variabel bantuan untuk proses pertukaran data dalam vektor B ketika ditemukan harga data yang sama dengan elemen data yang dibandingkan dalam vektor A. Algoritma prosedur penyelesaian permasalahan di atas adalah dituliskan sebagai berikut ini.
Masukan vektor A dan B yang akan dicek kesamaannya. Vektor A merupakan acuan untuk pengecekan. N menyatakan cacah elemen data dalam vektor A dan B. 1. Mulai 2. Proses berulang untuk menentukan elemen yang akan dibandingkan FOR I = 1 TO N
4
3. Proses berulang untuk mengecek kesamaan elemen vektor FOR J = I TO N IF A[I]= B[J] Jika ya, tukarkan posisi elemen data dalam vektor B BANTU = B[J] B[J] = B[I] B[I] = BANTU Jika tidak, cetak pesan “Vektor A tidak sama dengan vektor B” Ke langkah-5 4. Cetak pesan “Vektor A sama dengan vektor B” 5. Selesai
Selanjutnya, flowchart prosedur pengecekan kesamaan dua vektor tidak urut sebagaimana algoritma prosedur di atas adalah ditunjukkan pada Gambar 13.1.
5
Mulai
Baca vektor A,B
FOR I = 1 TO N
FOR J = I TO N YA
TIDAK A[I] = B[J] NEXT I
BANTU = B[J] B[J] = B[I] B[I] = BANTU
“Vektor A tidak sama dengan vektor B” NEXT I
“Vektor A sama dengan vektor B”
Selesai
Gambar 13.1 : Flowchart prosedur untuk mengecek kesamaan dua vektor tidak urut
13.2. Mengecek Kesamaan Dua Vektor Urut
Prosedur pengecekan kesamaan dua vektor urut dapat dilakukan secara lebih sederhana. Jika A dan B adalah nama-nama vektor urut yang masing-masing memiliki cacah elemen data sebanyak N, dan vektor A digunakan sebagai acuan
6
dalam pengecekan harga elemen-elemen vektor, maka langkah pengecekan kesamaan vektor A dan vektor B dapat dijelaskan sebagai berikut ini.
Mula-mula elemen ke-1 dalam vektor A dibandingkan dengan elemen ke-1 dalam vektor B. jika sama, maka proses dilanjutkan untuk membandingkan elemen ke-2 dalam vektor A dengan elemen ke-2 dalam vektor B. jika sama, maka proses dilanjutkan untuk membandingkan elemen ke-3, ke-4, dan seterusnya hingga elemen data terakhir dengan elemen-elemen pada urutan yang bersesuaian pada vektor B. Proses akan setelah semua elemen data dalam vektor A dibandingkan dengan elemen-elemen pada urutan yang bersesuaian dalam vektor B, atau jika terdapat elemen vektor A pada urutan tertentu yang tidak sama dengan elemen pada vektor B. Dalam kondisi demikian dapat disimpulkan bahwa vektor A tidak sama dengan vektor B. Sebaliknya kedua vektor adalah sama jika setiap elemen data dalam vektor A akan selalu dijumpai dalam vektor B. Dalam kondisi vektor A dan B telah berada dalam kondisi urut seperti di sini, maka prosedur pengecekan kesamaan vektor A dan B tidak memerlukan proses pertukaran tempat pada elemen data dalam vektor.
Sebagai contoh, berikut ini diketahui dua vektor yang akan dicek kesamaannya, yaitu vektor A dan vektor B. masing-masing vektor mempunyai cacah elemen data sebanyak 4 dan telah berada dalam kondisi urut secara naik. Elemen-elemen pada masing-masing vektor adalah sebagai berikut :
A
:
4
6
8
9
B
:
4
6
7
9
Jika vektor A dijadikan acuan dalam pengecekan, maka proses pengecekan kesamaan vektor A dan B di atas adalah dilakukan dengan cara sebagai berikut ini. Mula-mula elemen pertama dalam vektor A, yaitu 4 dibandingkan dengan elemen pertama dalam vektor B, yaitu 4. Karena harganya sama, maka proses kemudian dilanjutkan untuk membandingkan elemen berikutnya, yaitu 6 dalam vektor A
7
dengan 6 dalam vektor B. Ternyata harga keduanya sama, sehingga proses dilanjutkan kembali untuk membandingkan elemen-elemen vektor A dan B pada urutan berikutnya. Elemen 8 dalam vektor A kemudian dibandingkan dengan elemen pada urutan yang sama dalam vektor B, yaitu 7. Karena harganya tidak sama, maka dapat disimpulkan bahwa vektor A tidak sama dengan vektor B dan proses dapat dihentikan. Oleh karena itu elemen-elemen pada urutan selanjutnya tidak perlu dicek lagi.
Algoritma prosedur untuk penyelesaian permasalahan pengecekan kesamaan dua vektor A dan B yang masing-masing telah berada dalam kondisi urut sebagaimana dijelaskan di atas adalah dituliskan sebagai berikut ini.
Msukan vektor A dan B yang akan dicek kesamaannya. Vektor A merupakan acuan untuk pengecekan. N menyatakan cacah elemen data dalam vektor A dan B. 1. Mulai 2. Proses berulang langkah-3 FOR I = 1 TO N 3. Cek kesamaan elemen setiap elemen vektor FOR A[I] <> B[J] Jika ya, cetak pesan “Vektor A tidak sama dengan vektor B” Ke langkah-5 4. Cetak pesan “Vektor A sama dengan vektor B” 5. Selesai
Berdasarkan algoritma prosedur di atas, maka flowchart prosedurnya adalah ditunjukkan pada Gambar 13.2.
8
Mulai
Baca vektor A,B
FOR I = 1 TO N YA
TIDAK A[I] <> B[J] NEXT I
“Vektor A tidak sama dengan vektor B” “Vektor A sama dengan vektor B”
Selesai
Gambar 13.2 : Flowchart prosedur untuk mengecek kesamaan dua vektor urut