Algoritma dan Struktur Data - set

12
Himpunan (Set) Algoritma dan Struktur Data Kuliahkita - Edwin Lunando

Transcript of Algoritma dan Struktur Data - set

Page 1: Algoritma dan Struktur Data - set

Himpunan (Set)

Algoritma danStruktur Data

Kuliahkita - Edwin Lunando

Page 2: Algoritma dan Struktur Data - set

Himpunan (Set) adalah sebuah struktur data penyimpanan yang dapat menyimpan nilai tertentu tanpa terpaut urutan.

Himpunan atau set ini merupakan implementasi dari konsep pada definisi matematikanya yaitu finite set

Definisi

Page 3: Algoritma dan Struktur Data - set

Karakteristik Himpunan

Himpunan dapat tidak berisi atau himpunan kosong atau memiliki isi (lebih dari 1).

Apabila himpunan diisi dengan sebuah nilai kemudian diisi lagi dengan nilai yang sama, maka nilai tersebut tidak disertakan karena sudah ada di dalam himpunan tersebut.

Himpunan ini menerima nilai yang unik dan tidak redundan

Page 4: Algoritma dan Struktur Data - set

Operasi Himpunan

Sama seperti operasi himpunan pada matematika, struktur data himpunan juga dapat memiliki operasi yang sama seperti:1. gabungan (union)2. irisan (intersection)3. perbedaan (difference)4. bagian (subset)

Page 5: Algoritma dan Struktur Data - set

Primitif Himpunan

Selain itu, terdapat juga operasi primitif yang merupakan dasar pemeriksaan dari sebuah himpunan seperti:1. is_element_of (apakah merupakan elemen)2. is_empty (apakah himpunan kosong)3. size (berapakah ukuran himpunan)4. insert (menambahkan elemen pada himpunan)

Page 6: Algoritma dan Struktur Data - set

Himpunan (Set) pada C++

Sebuah himpunan pada bahasa pemrograman C++ sudah didefinisikan pada pustaka yang ada.

Jika ingin menggunakannya kita hanya perlu menyertakannya dengan :

#include <set>

Page 7: Algoritma dan Struktur Data - set

Multiset

Himpunan juga dapat berisi himpunan lainnya seperti pada definisi pada matematika.

Akan tetapi tipe yang disimpan perlu sejenis atau homogen dalam sebuah set.

Page 8: Algoritma dan Struktur Data - set

Berikut ini adalah contoh struktur data himpunan

Set menyimpan nilainya pada sebuah larik.Terdapat capacity pada himpunan untuk menetapkan batasan jumlah nilai yang dapat disimpan. Selain itu terdapat Last yang menandakan indeks kosong terakhir pada larik penampung nilai sehingga tidak perlu pencarian indeks untuk menambah nilai baru.

TDA Set

{ Contoh tipe himpunan bilangan bulat atau integer} type Set : < Capacity : Integer, Last : Integer, S: array [1..Capacity] of integer >

Page 9: Algoritma dan Struktur Data - set

Contoh Penggunaan Set#include <iostream>using namespace std;

typedef struct { int capacity; // kapasitas dari sebuah himpunan int last; // indeks kosong terakhir dari himpunan int *S; // larik dinamis yang didefinisikan sebagai penampung} Set;

...

Page 10: Algoritma dan Struktur Data - set

Contoh Penggunaan Set...

Set makeSet (int capacity) { Set tempSet; tempSet.capacity = capacity; // inisialisasi kapasitas set tempSet.last = 0; // set kosong, indeks terakhirnya adalah 0 tempSet.S = new int[capacity]; // inisialisasi larik penampung set return tempSet;}

bool is_element_of (Set S, int val) { // telusuri nilai dalam penampung for (int i = 0; i < S.capacity; i++) { if(S.S[i] == val) return true; // jika ada, kembalikan true } return false; // tidak ditemukan, kembalikan false}

...

Page 11: Algoritma dan Struktur Data - set

Contoh Penggunaan Set...

void insertSet(Set S, int val) { if (S.last != S.capacity) { // jika belum penuh, isi if (S.last == 0) { // jika set kosong, langsung isi S.S[0] = val; S.last += 1; // geser posisi last dengan ditambah } else { // jika set tidak kosong if (!is_element_of(S, val)) { // periksa apakah elemen tidak ada S.S[S.last] = val; // isi nilai pada posisi last S.last += 1; // geser posisi last dengan ditambah } } }}

...

Page 12: Algoritma dan Struktur Data - set

Contoh Penggunaan Set...

int main() { Set setKu = makeSet(5); // buat set dengan kapasitas 5 insertSet(setKu, 10); // sisipkan nilai insertSet(setKu, 9); insertSet(setKu, 10); // nilai 10 yang kedua tidak masuk karena sudah ada cout << setKu.S[0] << " " << setKu.S[1] << " " << setKu.S[2]; return 0;}