Rabu, 07 Desember 2016

Depth-First Search dengan Stack




DFS atau Depth-First Search merupakan metode penelusuran struktur graf/pohon secara mendalam. Pada setiap iterasi , algoritma berlanjut untuk titik yang belum dikunjungi, yang berdekatan dengan titik dimana algoritma sedang berlangsung. Proses ini berlangsung hingga mencapai jalan buntu/pencarian sudah tidak bisa kemana-mana lagi, kondisi ini terjadi ketika titik yang tidak memiliki titik berdekatan yang belum dikunjungi telah ditemui.
Kita dapat menggunakan stack untuk melacark operasi depth-first search, dengan mem-push simpul pada stack ketika simpul dikunjungi untuk pertama kalinya. Lalu kita mem-pop simpul tersebut jika pada simpul tersebut sudah tidak bisa kemana-mana lagi/buntu. Selain itu juga kita dapat membuat depth-first search forest, simpul awal graf traversal berfungsi sebagai akar dari pohon pertama dalam hutan.

Berikut merupakan proses penelusuran dfs dengan menggunakan stack

a.  Pertama kita tandai semua simpul dengan 0, artinya simpul tersebut belum dikunjungi.
b.    Masukkan simpul a ke dalam stack, dari simpul a (anggap a adalah parent) kita berlanjut ke simpul anak dari a yaitu c dan masukkan c ke dalam stack, dari simpul c kita lanjut ke simpul d dan simpul d dimasukkan ke dalam stack.
c.   Simpul d sudah tidak memiliki anak lagi, dan d berada dikondisi jalan buntu. Sehingga pada stack yang pertama kita keluarkan yaitu d. Dari d akan kembali ke c dan disimpul c kita mengecek apakah ada anak dari c? Ternyata ada, yaitu simpul f. Simpul f dimasukan ke dalam stack, dari simpul f kita melakukan penelusuran kembali, kita melihat bahwa ada anak dari simpul f yaitu b. Simpul b kita masukan ke dalam stack, dari simpul b penelusuran masih berlanjut karena masih ada simpul yang belum dikunjungi, yaitu simpul e. Simpul e kita masukan ke dalam stack, setelah itu c sudah tidak memiliki anak lagi dan berada dalam kondisi jalan buntu, sehingga di stack ini kita mem-pop e, setelah itu pop b, pop f, pop c, dan terakhir pop a.
d.  Pada graf selanjutnya kita lakukan hal seperti tadi yaitu kita tandai semua simpul dengan 0 yang berarti belum pernah dikunjungi.
e.   Kita mulai dari simpul g sebagai parent. Simpul g kita masukan ke dalam stack, selanjutnya lakukan penelusuran dari simpul g ke simpul anaknya yaitu h, h kita masukan ke dalam stack, dari h kia lakukan penulusuran kembali sehingga kita push i ke dalam stack, dan yang terakhir push j ke dalam stack.
f.   Karena pada simpul j sudah jalan buntu maka kita pop j, pop i, pop , dan terakhir pop g.

Jika dalam stack sudah kosong maka pencarian telah selesai dan hasil ditemukan.
Berikut merupakan hasil dari DFS tadi:
A-C-D-F-B-E-G-H-I-J.

Dalam DFS ini terdapat dua kali pengurutan yang ditandai dengan angka seperti gambar diatas. Angka yang berhimpitan dengan simpul itu merupakan urutan saat simpul itu dimasukkan (push). Dan angka yang berada disebelah kanan nya merupakan urutan pengeluaran (pop) simpul pada stack tadi.

Referensi: Buku Introduction to The Design and Analysis of Algorithms

Selasa, 06 Desember 2016

TEKNOLOGI SMART MOBS


A.    Pengertian Smart Mobs
Smart Mobs pada prinsipnya adalah sekelompok manusia mendadak berkumpul di tempat umum, lalu melakukan aktivitas bersama-sama dalam waktu sangat singkat dan langsung bubar untuk kembali ke aktivitas masing-masing. Peserta tidak saling kenal karena persiapannya dilakukan diam-diam, bahkan lokasi baru diberitahukan pada H-1, dan dalam pelaksanaannya menggunakan teknologi dengan mobilitas yang tinggi.

B.     Pengertian Media smart mobs dan sejarahnya
Smart mobs adalah suatu istilah yang berkaitan dengan penggunaan teknologi sebagai media yang memiliki mobilitas cukup tinggi untuk melakukan suatu proses social secara masal. Konsep ini pertama kali dikenalkan oleh Howard Rheingold yang dituangkan dalam bukunya yang berjudul " The Next Sosial Revolusi. Menurut Rheingold, smart mobs merupakan indikasi dari teknologi komunikasi yang berkembang yang akan memberdayakan masyarakat. Pada tahun 2002, "smart mobs" Konsep disoroti dan masuk dalam media  New York Times " Year in Ideas ".

C.      Perkembangan Teknologi Smart mobs
Smart mobs menggunakan media mobile dan jaringan komputer untuk mengatur tindakan kolektif, dari kawanan techo-savvy pemuda di perkotaan Asia dan Skandinavia ke pemberontakan warga dijalan-jalan Seattle, Manila, dan Caracas. Jaringan komunitas nirkabel, webloggers, pembeli dan penjual di eBay adalah indikator awal dari massa cerdas yang akan muncul dalam dekade mendatang. Teknologi yang digunakan dalam smart mobs bisanya teknologi yang memiliki mobilitas yang tinggi seperti: teknologi internet dan teknologi telepon seluler dimana teknologi ini memiliki mobilitas dan flexibilitas  yang tinggi dan cepat. Contohnya pada jaman seperti sekarang ini jaringan internet dan jaringan seluler dapat diakses dari mana saja dan juga menyebarkan informasi melalui teknologi ini membuhtuhkan waktu yang sedikit cocok untuk smart mobs mengingat smart mobs melibatkan orang dalam jumblah yang banyak. 

D.    Kesimpulan
Adanya pengaruh di bidang sosial yang diakibatkan oleh smart mobs menjelaskan bahwa teknologi juga dapat mempengaruhi hal - hal di bidang sosial. Hal ini dapat terjadi karena dalam smart mobs juga diperlukan teknologi yang mampu menggerakan orang dalam jumlah besar.

Jika kalian masih penasaran bagaimana sebenarnya smartmobs itu, kalian bisa melihat contoh videonya disini How To SmartMobs

Jumat, 02 Desember 2016

Algoritma Binary Search Ilustration


Algoritma pencarian bagidua atau yang disebut binary search.  Merupakan algoritma pencarian pada data terurut yang paling efficient. Dikatakan efficient karena dalam penggunaannya algoritma ini membutuhkan waktu pencarian yang cepat.
Sebagai contoh saya akan membahas tentang algoritma pencarian pada data terurut menurun dengan binary search.
Diasumsikan elemen-elemen larik sudah terurut dari besar ke kecil, selama pencarian kita memerlukan dua buah indeks larik, disini saya menggunakan larik a untuk menyebut indeks ujung kiri dan b untuk indeks ujung kanan. Pertama kita inisialisasi a dengan 1 dan b dengan n.
Langkah pertama yaitu bagi kedua elemen larik pada elemen tengah. Elemen tengah adalah elemen dengan indeks k=(a+b) div 2. Selanjutnya periksa apakah L[k]=x. L merupakan nama lariknya, jika L[k]=x, pencarian berhenti atau selesai karena x sudah ditemukan. Tetapi jika L[k]≠x, kita harus menentukan apakah pencarian akan dilakukan dilarik bagian kiri atau dibagian kanan. Jika L[k]<x, maka pencarian dilakukan pada larik bagian kiri, begitu sebaliknya jika L[k]>x, pencarian dilakukan lagi pada larik bagian kanan. Lalu ulangi langkah 1 hingga x ditemukan atau a>b (ukuran larik sudah nol).
Berikut ilustrasi binary search: dimisalkan ada larik L dengan delapan buah elemen yang sudah terurut menurun
9
7
6
4
3
2
1
a=1            2                    3                    4                    5                    6                        b=7
Langkah I:
Kita bagi larik L menjadi dua bagian dengan cara a=1 dan b=7, k=(1+7) div 2 = 4

9
7
6
4
3
2
1
a=1                  2                    3                    4                    5                    6                        b=7
Misalkan elemen yang dicari adalah x = 6.
Langkah II: Bandingkan L[4] dengan 6, apakah L[4]=6 ? Tidak, maka dari itu kita harus menentukan apakah pencarian akan dilakukan di bagian kiri atau dibagian kanan dengan pemeriksaan sebagai berikut: karena L[4]<6 maka pencarian dilakukan pada bagian kiri dengan a=1 dan b=3
9
7
6
a=1                                    2                                  b=3
                                    kiri

Langkah III: Pembagian a=1 dan b=3, k=(1+3) div 2 = 2.
9
7
6
a=1                                    2                                  b=7
            kiri                                                       kanan
Langkah IV: lakukan pemandingan kembali antara L[2] dengan 6, ternyata L[2]>6 sehingga pencarian dilakukan pada larik bagian kanan dengan a=7 dan b=7.
6
        a=b=7

Langkah V: pembagian a=7 dan b=7, k=(7+7) div 2 = 7.
6
            7
Langkah VI: bandingkan L[7] dengan 6, apakah L[7]=6 ? Ya ! Pencarian selesai, x ditemukan.

Perintah DDL dan DML dalam SQL

1. DDL atau Definition Data Language
Yaitu perintah yang ada dalam SQL yang digunakan untuk membuat database, tabel, hingga penghapusan database atau tabel.
Contoh:
-CREATE DATABASE
-CREATE TABLE
-ALTER TABLE
-DROP TABLE
2. DML atau Data Manipulation Language
Adalah perintah yang ada dalam SQL yang digunakan untuk memanipulasi adapun contoh manipulasi tersebut yaitu:
-SELECT
-INSERT
-DELETE
-UPDATE
Kita bahas mulai dari pengertian:
-SELECT
Perintah select ini merupakan perintah untuk mengambil data
-INSERT
Perintah insert digunakan untuk memasukkan/menambah data
-DELETE
Perintah delete merupakan perintah yang digunakan untuk menghapus data 
-UPDATE
Perintah update digunakan untuk mengubah data

Pada kesempatan ini saya mencoba untuk menjelaskan bagaimana cara menggunakan perintah-perintah pada SQL. Baik saya mulai dari membuat database:

Untuk membuat database kita menggunakan perintah CREATE DATABASE sebagai contoh saya membuat database front office : CREATE DATABASE front_offc;

Lalu blok seluruh tulisan diatas dan tekan tombol run, jika database sukses dibuat maka akan ada message seperti dibawah ini

Setelah sukses membuat database, maka lanjut untuk membuat tabel pada database front_offc, sebagai contoh saya membuat tabel pegawai


Sebelum CREATE TABLE masukkan perintah USE nama_database, disini karena kita menggunakan front_offc sebagai nama databasenya kita masukkan perintah USE front_offc;


Perintah untuk membuat tabel: CREATE TABLE tb_pegawai(
id_pegawai INT(10) NOT NULL,
nama VARCHAR(100),
jenis_kelamin ENUM ('Laki-laki','Perempuan'),
alamat VARCHAR(100),
no_telp VARCHAR(12),
PRIMARY KEY (id_pegawai));
Berikut tampilan jika tabel telah berhasil dibuat
Untuk menambahkan data pada tb_pegawai perintah yang digunakan yaitu INSERT, bentuk dasar dari INSERT yaitu:
INSERT INTO nama_tabel(nama_field,nama_field...) VALUES(‘nilai’,’nilai’,..)
Baik, disini saya akan memberikan contoh dalam penambahan data pada tabel pegawai. Berikut contohnya:
INSERT INTO tb_pegawai (id_pegawai,nama,jenis_kelamin,alamat,no_telp) VALUES('101','Sekar','Perempuan','Jalan Anggrek No.22','081222897654');
Nah tentu kalian penasaran kan untuk melihat data yang sudah dimasukkan tadi apakah sudah masuk dalam tabel atau belum? Untuk melihat isi tabel kita gunakan perintah SELECT, bentuk umum dari perintah SELECT yaitu SELECT *FROM nama_tabel.
Berikut perintah untuk melihat isi tabel pegawai: SELECT *FROM tb_pegawai;
Dan inilah tampilan dari tabel yang sudah berhasil diisi data
Jika kita ingin mengganti nama field ataupun tipedata, kita bisa menggunakan perintah ALTERTABLE, sebagai contoh:
ALTER TABLE tb_pegawai
CHANGE jenis_kelamin Sex ENUM('Laki-laki','Perempuan');

Perintah ini merubah nama field jenis_kelamin menjadi Sex sedangkan untuk tipe datanya masih tetap menggunakan ENUM.
Berikut tampilan dari hasil ALTER TABLE tadi:
Selain itu juga kita dapat menggunakan perintah ALTER TABLE untuk menambah field dalam suatu table bentuk dasarnya yaitu ALTER TABLE nama_database.nama_tabel ADD COLUMN nama_field tipedata, contohnya sebagai berikut:
ALTER TABLE front_offc.tb_pegawai ADD COLUMN tanggal_lahir DATE;
Dan ini merupakan tampilan dari tabel yang sudah terisi field tanggal_lahir

Untuk mengubah suatu data pada tabel kita dapat menggunakan perintah UPDATE, bentuk dasar dari perintah ini yaitu: UPDATE nama_tabel SET nama_field=nilai WHERE nama_field=nilai. Mungkin kalian masih bingung dengan bentuk dasar dari UPDATE tersebut, untuk memperjelas contohnya seperti berikut:
UPDATE tb_pegawai SET nama='Sekarini' WHERE id_pegawai='101';
Kita juga dapat menghapus isi data dalam tabel dengan menggunakan perintah DELETE,  bentuk dasar dari perintah DELETE yaitu: DELETE FROM nama_tabel WHERE nama_field=nilai. Disini saya akan mencoba menghapus data dari tabel pegawai menggunakan perintah DELETE:
DELETE FROM tb_pegawai WHERE id_pegawai='101';
Maka data dari pegawai yang memiliki id ‘101’ akan terhapus. Namun sebelum saya menghapus data dari tabel, saya menambahkan data lagi sebanyak satu data agar ada perubahan

Berikut tampilan saat perintah DELETE berhasil dijalankan
Perintah yang terakhir yaitu DROPTABLE, perintah ini digunakan untuk menghapus suatu tabel dalam database, bentuk umum dari perintah ini yaitu: DROP TABLE nama_table. Dan sebagai contoh saya akan menghapuskan tb_bagian yang mana tabel ini sebelumnya sudah saya tambahkan agar ada perubahan
Dan berikut tampilan saat tabel tb_bagian sudah berhasil dihapus

Nah sekian penjelasan mengenai perintah DDL dan DML dalam SQL, semoga bermanfaat..