Senin, 03 April 2023

PENERAPAN CRM PADA PERUSAHAAN KENTUCKY FRIED CHICKEN(KFC)


 Tidak semua perusahaan atau wirausahawan dapat memberikan sebuah produk yang dijual menyedari pentingnya sebuah pelayanan terhadap konsumen. Hal ini dapat terjadi lantaran perusahaan hanya berfokus pada produk yang mereka jual. Oleh kerena itu dibutuhkanlah sebuah strategi yang mampu menjadi aturan sebuah perusahaan untuk memberikan pelayanan terbaik untuk memberikan kepuasan lebih kepada konsumen.

CRM atau Customer Relationship Management merupakan sebuah strategi manajemen hubungan yang sangat penting bagi sebuah perusahaan dalam melakukan usaha untuk memberikan pelayanan terbaik bagi konsumen. Strategi ini dilakukan untuk membantu perusahaan mendapatkan keuntungan berupa memperoleh kepercayaan konsumen, memperoleh pendapatan yang lebih besar, serta karyawan yang profesional.

CRM tidak hanya memberikan sebuah gambaran bagaimana memberikan perlayanan yang baik, ada beberapa fungsi lain dengan adanya CRM, antara lain:

·       Dapat menganalisis konsumen berdasarkan kriteria tertentu

·       Informasi akan konsumen dapat direkam sehingga perusahaan dapat mengetahui kebutuhan konsumen

·       Dapat memberikan timbal balik kepada perusahaan

Dengan adanya CRM diharapkan para wirausahawan dapat mengetahui langkah-langkah dalam melayani konsumen, agar para konsumen tidak hanya puas akan barang yang mereka beli tetapi juga terhadap pelayanan yang diberi.

Penerapan strategi CRM untuk membentuk interaksi antara perusahaan dengan para konsumen.



 

Penjelasan Gambar

Strategi CRM membutuhkan empat komponen :

  1. Customer-management orientation

Customer-management orientation mencakup sekumpulan nilai-nilai perusahaan serta strategi dan aksinya dalam mengimplementasikan customer management principles

  1. Integration and alignment of organizational processes

Integration and alignment of organizational processes dikelola dengan memahami nilai yang akan diberikan pada pelanggan yang sudah ditargetkan sesuai dengan prosesnya. Komponen ini dapat digunakan untuk menjelaskan dan merancang  proses organisasinya

  1. Information capture and alignment of technology

Information capture and alignment of technology dikarakteristikan oleh kemampuan dalam mentransfer data menjadi dalam bentuk informasi

  1. CRM strategy implementation

Pengimplementasian CRM dalam proses dan aktivitas dibutuhkan untuk menyukseskan strategi CRM

 

Salah satu perusahaan yang menerapkan strategi CRM pada perusahaannya yaitu Kentucky Fried Chicken atau KFC. Perusahaan ini merupakan restoran makanan cepat saji yang berasal dari Amerika Serikat yang berada di distrik Louisville. KFC didirikan pada 20 Maret 1930 oleh pria yang bernama Harland Sanders. Produk utama yang dijual perusahaan ini adalah ayam goreng, KFC merupakan perusahaan restoran terbesar kedua di dunia dibawah McDonald’s diurutan pertama, dengan memiliki kurang lebih 22.621 lokasi secara global di 150 negara pada tahun 2019.

Cara KFC menerapkan CRM pada perusahaan.

  • Stempel akan diberikan setiap kali pelanggan berbelanja produk KFC, Stempel yang terkumpul dapat ditukarkan dengan produk gratis atau merchandise.
  • Pelanggan dapat menggunakan aplikasi KFC untuk menunjukan lokasi KFC cabang terdekat. Selain lokasi, Pelanggan juga dapat melihat promosi atau bahkan penawaran khusus sesuai dengan lokasi customer.
  • Aplikasi KFC akan merekam setiap perilaku atau kebiasaan pelanggan, dari situ perusahaan dapat mengetahui penawaran atau promosi yang sesuai untuk pelanggan.
  • Wifi gratis di lokasi

Senin, 28 Februari 2022

Desain Game Menjadi Bidang Minat Penelitian

 8-bit set#1: Choose your character on Behance | Character design sketches,  Character, Character illustration 
 

Di era sekarang game tidak lagi hanya sekedar hiburan diwaktu luang, tetapi juga sudah meranah menjadi sebuah pekerjaan. Baik berupa pendesain karakter game, penganimasian game, pemrograman game bahkan mereview sebuah game menjadi sebuah pekerjaan baru.

oleh karena itu menjadi seorang desainer game dapat menjadi minat penelitian, soft skill yang harus dimiliki yaitu pengimajinasian bagaimana bentuk dan rupa karakter yang akan dibuat. Tidak hanya karakter background dari sebuah game merupakan bagian pekerjaan dari seorang desainer game.

kemudiaan penguasaan software desain membuat atribut game juga penting dengan begitu desainer dapat menganimasikan karakter yang dibuat.

 

Selasa, 04 Januari 2022

Implementasi Algoritma Branch and Bound dalam Lampu Lalu Lintas

PENGERTIAN ALGORITMA BRANCH and BOUND      

  Algoritma Branch and Bound merupakan algoritma yang digunakan dalam mengoptimasi suatu persoalan tanpa melanggar batasan persoalan tersebut. Cara kerja algoritma Branch and Bound adalah dengan membangun suatu pohon ruang status. Setiap simpul pada pohon diberi nilai cost yang merupakan taksiran lintasan termurah ke simpul status solusi. Tujuannya adalah agar tidak semua simpul dibangkitkan, tetapi hanya simpul dengan nilai cost paling optimal. Pembangiktan simpul umumnya menggunakan aturan best-first rule. Cara penentuan cost masing-masing simpul menerapkan fungsi pembatas atau fungsi obyektif. Jika nilai fungsi obyektif tidak lebih baik dari nilai terbaik, tidak merepresentasikan solusi yang feasible, dan melanggar batasan, maka simpul tersebut dimatikan. Solusi yang feasible adalah solusi terbaik dari simpul lainnya. Algoritma tersebut dapat digambarkan dengan daftar antrian priority queue atau dengan pohon ruang status. Berikut algoritma Branch and Bound secara umum:

 Problem-92 | math world only for math lovers

 1. Masukkan simpul akar ke dalam antrian Q. Jika simpul akar adalah simpul solusi, maka solusi telah ditemukan. Berhenti.
 

2. Jika Q kosong, tidak ada solusi. Berhenti.

3. Jika Q tidak kosong, pilih antrian Q simpul ke i yang mempunyai nilai cost ĉ(i) paling optimal. Jika terdapat beberapa simpul i yang memenuhi, ikuti aturan best-first rule atau pilih secara sembarang.

4. Jika simpul i adalah simpul solusi, berarti solusi sudah ditemukan, berhenti. Jika simpul i bukan simpul solusi, maka bangkitkan semua anak-anaknya. Jika i tidak mempunyai anak, kembali ke langkah 2. Pohon merupakan graf terhubung yang tidak membentuk sirkuit. Pohon berakar adalah pohon yang memperlakukan sebuah simpulnya sebagai akar dan sisi-sisinya diberi arah. Pada pohon berakar, terdapat beberapa terminologi, yakni anak (simpul yang terhubung dan satu level lebih bawah), orangtua 1 

5. Untuk setiap anak j dari simpul i, hitung ĉ(j), dan masukkan semua anak-anak tersebut ke dalam Q. 

6. Kembali ke langkah 2.

 

 Algoritma Branch and Bound diterapkan pada beberapa persoalan, yakni persoalan N-Ratu, persoalan Travelling Salesman Problem, 15-Puzzle, Knapsack Problem, dan persoalan-persoalan lainnya.

Sistem kemudian menganalisis keadaan lalu lintas, berapa banyak mobil yang bergerak ke arah masing-masing lampu. Sistem kemudian merancang sebuah jadwal pergantian lampu hijau ke lampu merah atau lampu merah ke lampu hijau untuk masing-masing lampu dan mengomunikasikannya ke semua lampu. Setiap lampu harus “mengetahui” jadwal semua lampu dan keadaan lalu lintas semua jalur. Masing-masing lampu lalu lintas bekerja sesuai dengan jadwal tersebut. Proses penjadwalan dilakukan pada setiap satuan waktu tertentu mengikuti keadaan lalu lintas. Proses penjadwalan tersebut bergantung pada dua hal, yakni kepadatan masing-masing jalur, dan waktu maksimal bergerak atau berhenti. 

 

ANALISIS KEADAAN LALU LINTAS SIMPANG DAGO

kontrast Siroče Izgledi smart traffic lights - pellizzaritendaggi.net

Lampu lalu lintas pintar adalah sebuah sistem lampu lalu lintas yang memanfaatkan teknologi dan intelejensia buatan agar lampu lalu lintas dapat ‘berpikir’ sendiri apa yang harus dilakukan berdasarkan lalu lintas saat itu. Sistem ini menggunakan proses pengiriman sinyal dan perekaman keadaan lalu lintas saat itu. Misalkan pada sebuah perempatan, terdapat empat buah lampu lalu lintas. Masing-masing lampu memiliki sebuah kamera untuk merekam keadaan lalu lintas. Beberapa sistem tidak menggunakan kamera dalam menangkap keadaan lalu lintas, tetapi menggunakan sensor penangkap sinyal kendaraan atau menggunakan perangkat nirkabel pendeteksi kendaraan

Perempatan Simpang Dago membatasi empat ruas jalan, yakni Jalan Ir. H. Juanda bagian lebih Utara ke arah , Jalan Ir. H. Juanda bagian lebih Selatan, Jalan Dipati Ukur, dan Jalan Siliwangi. Keempat Jalan tersebut merupakan jalan besar yang hampir setiap saat dipadati oleh kendaraan. Perempatan Simpang Dago sendiri memiliki empat buah lampu lalu lintas aktif. Letak lampu lalu lintas dapat dilihat pada gambar di atas. Titik merah menggambarkan letak lampu lalu lintas dan titik hitam menggambarkan arah lampu lalu lintas tersebut. Penulis mengamati kondisi lalu lintas perempatan Simpang Dago berdasarkan kepadatan jalan pada saat lampu sedang menyala bewarna merah. Kepadatan jalan diukur dari banyaknya mobil per satuan luas wilayah jalan tersebut.

Semakin berkembangnya zaman, semakin dinamisnya pergerakan zaman, kebutuhan akan suatu kota yang pintar semakin tinggi. Kota yang pintar dapat dibangun oleh kemajuan teknologi, informasi, dan komunikasi yang baik. Kota pintar dibangun dengan tujuan meningkatkan fasilitas yang baik bagi penduduk kota dan menyelesaikan masalah yang kerap kali muncul dan mengganggu bagi kehidupan penduduk kota. Salah satu masalah yang sering timbul dan menjadi kegelisahan penduduk kota pintar Bandung adalah kemacetan. Kemacetan, yang dapat menimbulkan konsumsi bahan bakar berlebihan yang sia-sia dan membuang-buang waktu dengan percuma, disebabkan oleh padatnya kendaraaan yang melintasi jalanan kota Bandung dan ketidaksesuaian lampu lalu lintas dengan keadaan di jalanan. Penulis mengajukan suatu solusi untuk mengatasi masalah kemacetan ini, yakni membangun suatu lampu lalu lintas pintar yang tidak hanya beroperasi berdasarkan satuan waktu tertentu, tetapi juga dengan melihat keadaan jalan yang ada. Lampu hijau akan lebih diprioritaskan kepada jalan yang memiliki kepadatan jalan lebih besar dibandingkan dengan jalan lainnya. Dengan menggunakan sistem penjadwalan yang baik dengan implementasi algoritma Branch and Bound dan mencantumkan batas waktu kendaraan menunggu lampu merah sebagai fungsi pembatas pada algoritma tersebut, penulis berharap sistem penjadwalan tersebut dapat menciptakan lampu lalu lintas yang pintar dan membantu mengurangi kemacetan.

 

Referensi

https://adoc.pub/penerapan-algoritma-branch-and-bound-dalam-lampu-lalu-lintas.html 


Rabu, 22 Desember 2021

Algoritma Divide and Conquer

Algoritma Divide and Conquer - Pip Tools

 Divide and Conquer (D&C) adalah algoritma pemrograman yang melakukan pemecahan masalah menjadi dua sub-masalah secara rekursif sampai setiap sub-masalah cukup sedarhana untuk diselesaikan secara lansung. Tiap solusi dari masing-masing sub-masalah akan digabungkan untuk mendapatkan solusi dari masalah utama tersebut. Algoritma D&C menjadi basis dari algoritma-algoritma efisien untuk masalah-masalah seperti sorting dan searching. 

    Algoritma Divide and Conquer secara natural diimplementasikan secara rekursif sebagai pemanggilan prosedur dalam dirinya sendiri. Sub-masalah akan dikerjakan dalam procedur-call stack. Setiap Sub-masalah yang merupakan hasil pembagian dari masalah utama biasanya dibagi tanpa menimbulkan overlapping sehingga tidak ada pengerjaan redundan. Semuanya akan dimasukkan kedalam stack dan dikerjakan mulai dari sub-masalah terkecil.
 

Implementasi Algoritma Divide and Conquer pada Sorting dan Searching

A. Sorting 

1. Insertion Sort

     Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Ide dari algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu. Anggaplah anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja, sebutlah meja ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian kita mempunyai meja yang lain, meja kedua, dimana kartu yang diurutkan akan diletakkan. Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu pada meja pertama telah diletakkan berurutan pada meja kedua. Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.

Algoritmanya :
void insertionSort(Object array[], int startIdx, int endIdx)
{ for (int i = startIdx; i < endIdx; i++) { int k = i;
if(((Comparable) array[k]).compareTo(array[j])>0) {
for (int j = i + 1; j < endIdx; j++) { k = j; } } swap(array[i],array[k]); }
}
 2. Selection Sort 
 

    Jika anda diminta untuk membuat algoritma sorting tersendiri, anda mungkin akan menemukan sebuah algoritma yang mirip dengan selection sort. Layaknya insertion sort, algoritma ini sangat rapat dan mudah untuk diimplementasikan. Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket kartu. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending. Pada awalnya, kartu tersebut akan disusun secara linier pada sebuah meja dari kiri ke kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudian tukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu cari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan kartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi langkah – langkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dan dapat digeser dengan kartu yang bernilai lebih rendah.

Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.

Algoritmanya :

void selectionSort(Object array[], int startIdx, int endIdx)
{ int min; for (int i = startIdx; i < endIdx; i++) {
if (((Comparable)array[min]).compareTo(array[j])>0) {
min = i; for (int j = i + 1; j < endIdx; j++) { min = j;
}
} } swap(array[min], array[i]);
}

 

3. Quick Sort

 

    Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini juga berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini hanya mengikuti langkah – langkah sebagai berikut :

1. Divide

Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r] dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q] dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada elemen q merupakan salah satu bagian dari prosedur pemisahan

2. Conquer

Mengurutkan elemen pada sub-rangkaian secara rekursif

Pada algoritma quicksort, langkah “kombinasi” tidak di lakukan karena telah terjadi pengurutan elemen – elemen pada sub-array

Algoritmanya :

void quickSort(Object array[], int leftIdx, int rightIdx) {
int pivotIdx; /* Kondisi Terminasi */
pivotIdx = partition(array, leftIdx, rightIdx);
if (rightIdx > leftIdx) { quickSort(array, leftIdx, pivotIdx-1);
}
quickSort(array, pivotIdx+1, rightIdx); }

4. Merge Sort

    Beberapa algoritma mengimplementasikan konsep rekursi untuk menyelesaikan permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan utama.

Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah.

1. Divide

    Memilah masalah menjadi sub masalah

2. Conquer

    Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan lebih efektif

3. Kombinasi

    Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju penyelesaian atas permasalahan utama

Seperti yang telah dijelaskan sebelumnya, Merge sort menggunakan pola divide and conquer. Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkahberpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.

1. Divide

    Memilah elemen – elemen dari rangkaian data menjadi dua bagian.

2. Conquer

    Conquer setiap bagian dengan memanggil prosedur merge sort secara rekursif

3. Kombinasi

    Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan rangkaian data berurutan

Algoritmanya:

void mergeSort(Object array[], int startIdx, int endIdx)
{ if (array.length != 1) {
mergeSort(leftArr, startIdx, midIdx);
//Membagi rangkaian data, rightArr dan leftArr
}
mergeSort(rightArr, midIdx+1, endIdx); combine(leftArr, rightArr); }

5. Counting Sort

    Adalah sebuah algoritma sorting linear yang digunakan untuk mengurutkan ‘item’ ketika urutannya telah ditentukan dan memiliki panjang yang terbatas. Bilangan interval yang telah tetap, katakana k1 ke k2 adalah contoh dari ‘item’ tersebut. Counting sort sebenarnya merupakan metode pengurutan yang memanfaatkan index variabel array. Hanya effektif pada data yang nilainya kecil.

Algoritma ini diproses dengan mendefinisikan sebuah hubungan urutan antara ‘item’ yang akan disorting. Katakana ‘item’ yang akan disorting adalah variable A. Maka, terdapat sebuah array tambahan dengan ukuran yang serupa dengan array A. katakana array tersebut adalah array B. untuk setiap element di A, sebut e, algoritma ini menyimpan jumlah ‘item’ di A lebih kecil dari atau sama dengan e di B(e). jika hasil sorting yang terakhir disimpan di array C, maka untuk masing-masing e di A, dibuat dalam arah yang sebaliknya, yaitu C[B(e)]=e. setelah step di atas, niali dari B(e) berkurang dengan 1.

Algoritma ini membuat 2 passover A dan passover B. Jika ukuran dari range k lebih kecil dari ukuran input n, maka time complexity = O(n). perhatikan juga bahwa algoritma ini stabil yang berarti bahwa sambungan diselesaikan dengan langsung mengabarkan element-element yang muncul pertama kali.

Adapun syarat algoritma ini berjalan dengan baik ialah:

1.      Data harus bilangan bulat yang bernilai lebih besar atau sama dengan nol

2.      Range data diketahui

Ada 3 macam array yang terlibat:

1.      Array untuk mengisi bilangan yang belum diurutkan.

2.      Array untuk mengisi frekuensi bilangan itu, sekaligus sebagai penghitung kejadian.

3.      Array untuk mengisi bilangan yang sudah diurutkan.

Algoritmanya :
countingsort(A[], B[], min, max, n)
for i = min to max do C[i] = 0
C[A[j]] = C[A[j]] + 1
for j = 1 to n do for i = min + 1 to max do
B[C[A[j]]] = A[j]
C[i] = C[i] + C[i-1] for j = n downto 1 do
C[A[j]] = C[A[j]] – 1

6. Radix Sort

    Radix sorting bisa digunakan ketika masing-masing universal element bisa dilihat sebagai sebuah urutan digit (atau huruf atau symbol lainnya). Sebagai contoh, kita bisa membuat masing-masing bilangan bulat antar 0 sampai 99 sebagai sebuah urutan dengan dua digit (seperti “05”). Untuk menyorting sebuah array dari angka 2-digit, algoritma ini membuat dua ‘passing’ sorting melalui array tersebut. Pada ‘passing’ pertama, element array disorting pada least significant decimal digit. Kunci utama dari radix sort adalah pada passing yang kedua. Hasilnya, setelah kedua passing melewati array tersebut, data yang terisi telah disorting.

 

B. Searching

1. Linear Search

    Algoritma pencarian secara linear adalah algoritma untuk mencari sebuah nilai pada table sambarang dengan cara melakukan pass atau transversal. Transversal dari awal sampai akhir table. Ada dua macam cara pencarian pada table. Algoritma mempunyai dua jenis metode yaitu dengan Boolean dan tanpa Boolean.

2. Binary Search 

    Algoritma pencarian biner adalah algoritma untuk mencari sebuah nilai pada tabel teurut dengan cara menghilangkan setengah data pada setiap langkah. Algoritma ini mencari nilai yang dicari dengan tiga langkah yaitu :

• Mencari nilai tengah dari tabel (median).
• Melakukan perbandingan nilai tengah dengan nilai yang dicari untuk menentukan apakah nilai yang dicari ada pada sebelum atau setelah nilai tengah.
• Mencari setengah sisanya dengan cara yang sama.

Selasa, 14 Desember 2021

Sejarah, Definisi dan Cara Kerja Divide and Conquer

 A. Sejarah Divide and Conquer

 Pada   zaman   dahulu,   divide   and   conquer merupakan strategi militer  yang  dikenal dengannama divide  ut  imperes.  Saat  ini  strategi  tersebut  menjadi strategi fundamental di dalam ilmu komputer dengan nama   divide   and   conquer.   Algoritma   divide   and conquer  ini  ditemukan  oleh  seorang  ilmuwan  Rusia bernama  Anatolii  Alexeevich  Karatsuba  pada  tahun 1960.  Pada  mulanya  beliau  menemukan  algoritma yang  lebih  mangkus   untuk   mengalikan   dua  buah bilangan bulat yang besar.

Algoritma divide and conquer di mana sub-masalah berukuran kira-kira setengah dari ukuran aslinya, memiliki sejarah yang panjang. Sementara deskripsi yang jelas tentang algoritma pada komputer muncul pada tahun 1946 dalam sebuah artikel oleh John Mauchly, gagasan untuk menggunakan daftar item yang disortir untuk memfasilitasi pencarian berasal dari setidaknya sejauh Babylonia pada 200 SM. Algoritma divide and conquer kuno lainnya adalah algoritma Euclidean untuk menghitung pembagi persekutuan terbesar dari dua bilangan dengan mengurangi bilangan tersebut menjadi subproblem ekuivalen yang lebih kecil dan lebih kecil, yang berasal dari beberapa abad SM.

Contoh awal dari algoritma bagi dan aklukkan dengan beberapa subproblem adalah deskripsi Gauss tahun 1805 tentang apa yang sekarang disebut algoritma Cooley-Tukey fast Fourier transform (FFT), meskipun dia tidak menganalisis jumlah operasinya secara kuantitatif, dan FFT tidak tersebar luas sampai ditemukan kembali lebih dari satu abad kemudian.

Algoritma D&C dua subproblem awal yang secara khusus dikembangkan untuk komputer dan dianalisis dengan tepat adalah algoritma pengurutan gabungan, yang ditemukan oleh John von Neumann pada tahun 1945. Contoh penting lainnya adalah algoritma yang ditemukan oleh Anatolii A. Karatsuba pada tahun 1960 yang dapat mengalikan dua angka n- digit dalam  O operasi (dalam notasi Big O). Algoritma ini membantah dugaan tahun 1956 Andrey Kolmogorov  operasi akan diperlukan untuk tugas itu. Sebagai contoh lain dari algoritma bagi-dan-taklukkan yang awalnya tidak melibatkan komputer, Donald Knuth memberikan metode yang biasanya digunakan kantor pos untuk merutekan surat: surat diurutkan ke dalam kantong terpisah untuk wilayah geografis yang berbeda, masing-masing kantong ini diurutkan sendiri ke dalam batch untuk sub-wilayah yang lebih kecil, dan seterusnya sampai dikirimkan. Ini terkait dengan jenis radix, dijelaskan untuk mesin sortir kartu berlubang sejak tahun 1929.

B. Pengertian Algoritma Devide & Conquer

Algoritma Divide and Conquer merupakan algoritma yang
berprinsip memecah-mecah permasalahan yang terlalu besar
menjadi beberapa bagian kecil sehingga lebih mudah untuk
diselesaikan.

Langkah-Langkah Umum Devide & Conquer

>Divide: membagi persoalan menjadi beberapa sub sub masalah yang memiliki
kemiripan dengan persoalan semula namun berukuran lebih kecil(idealnya
berukuran hampir sama).

>Conquer (solve): dalam langkah ini kita mencoba menyelesaikan masalah atau
data yang telah dipecahkan pada langkah pertama, dengan menggunakan
algoritma sederhana.

>Combine: menggabungkan solusi masing-masing sub sub masalah sehingga
membentuk solusi atau hasil akhir dari persoalan semula.

Skema Umum Divide & Conquer


Pengertian Insertion Sort
Insertion Sort adalah sebuah metode pengurutan data
dengan menempatkan setiap elemen data pada
posisinya dengan cara melakukan perbandingan
data-data yang ada.

Contoh Data

Data : 6    8    2    1    4

Penjelasan :

Pada iterasi 2, Gabungkan SubData 6 dengan 8 sembari di sorting. Karena 8 > 6 maka, tidak terjadi pertukaran. Perbandingan
dilakukan dari SubData paling belakang sampai SubData Pertama.

Pada iterasi 4, Gabungkan SubData 6, 8 dan 2 sembari di sorting. Perbandingan dilakukan dari Data yang paling belakang. 2
bandingkan dengan 8. Karena, 2 < 8 maka, SubData 2 bertukar tempat dengan SubData 8. Kemudian, bandingkan lagi 2 dengan 6.
Karena 2 < 6 maka, SubData 2 bertukar tempat dengan SubData 6.

Pada Iterasi 4, Gabungkan SubData 2, 6, 8 dan 1 sembari di sorting. Bandingkan SubData 1 dengan SubData 8. Karena 1 < 8 maka,
SubData 1 bertukar tempat dengan SubData 8. Lanjut lagi bandingkan SubData 1 dengan SubData 6. Karena, 1 < 6 maka SubData 1
bertukar tempat dengan SubData 6. Bandingkan lagi SubData 1 dengan SubData 2. Karena 1 < 2 maka, SubData 1 bertukar tempat
dengan SubData 2.

Pada iterasi 6, Gabungkan SubData 1, 2, 6, 8 dan 4 sembari di sorting. Bandingkan SubData 4 dengan SubData 8. Karena 4 < 8 maka,
SubData 4 bertukar tempat dengan SubData 8. Bandingkan lagi SubData 4 dengan SubData 6. Karena 4 < 6 maka, SubData 4 bertukar
tempat dengan SubData 6. Bandingkan lagi SubData 4 dengan SubData 2. Karena 4 > 2 maka, tidak terjadi pertukaran. Dan hentikan
proses perbandingan.

Data setelah di Sorting : 1    2    4    6    8

Menggunakan Algoritma Divide and Conquer
Data : 6 8 2 1 4

Lakukan pembagian data tersebut secara satu per satu dimulai dari data pertama sampai data terakhir.

DIVIDE, CONQUER dan SOLVE :
6    8    2    1    4
6    8    2    1    4
6    8    2    1    4
6    8    2    1    4
6    8    2    1    4

INSERT SORT :
6    8    2    1    4   Karena   1 < 2 , 2 < 4  Maka :
6    8    1    2    4   Karena   1 < 8 , 2 < 8, 4 < 8   Maka :
6    1    2    4    8   Karena   1 < 6, 2 < 6, 4 < 6, 6 < 8   Maka :
1     2   4    6    8

 

 

 Referensi

https://ndawindaayu.blogspot.com/2020/12/divide-and-conquer.html

https://yogafirza.blogspot.com/2019/02/algoritma-divide-dan-conquer.html

Minggu, 10 Oktober 2021

PEMROGRAMAN CSS

 

1. How To Style Alert Buttons

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<style>

.btn {

    border: none;

    color: white;

    padding: 14px 28px;

    font-size: 16px;

    cursor: pointer;

}


.success {background-color: #4CAF50;} /* green */

.success:hover {background:: #46a049;}


.info {background-color: #2196f3;} /* blue */

.info:hover {background: #0b7dda;}


.warning {background-color: #ff9800;} /* orange */

.warning:hover {background: #e68a00;}


.danger {background-color: #f44336;} /* red */

.danger:hover {background: #da190b;}


.default {background-color: #e7e7e7; color: black;} /* gray */

.default:hover {background: #ddd;}

</style>

</head>

<body>


<h1>Alert Buttons</h1>


<button class="btn success">success</button>

<button class="btn info">info</button>

<button class="btn warning">warning</button>

<button class="btn danger">danger</button>

<button class="btn default">default</button>


</body>

</html>


2. CSS FORMS


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<style>

input[type=text], select {

    width: 100%;

    padding: 12px 20px;

    margin: 8px 0;

    display:inline-block;

    border: 1px solid #ccc;

    border-radius: 4px;

    box-sizing: border-box;

}


input[type=submit] {

    width: 100%;

    background-color: #4caf50;

    color: white;

    padding: 14px 20px;

    margin: 8px 0;

    border-radius: 4px;

    cursor: pointer;

}

input[type=submit]:hover {

    background-color: #45a049;

}


div {

    border-radius: 5px;

    background-color: #f2f2f2;

    padding:200px;

}

</style>

<body>

<h3>Using CSS to style an HTML form</h3>


<div>

 <form action="/action_page.php">

 <label for="fname">First Name</label>

 <input type="text"id="fname" name="firstname" placeholder="Your name.." >

 

 <label for="lname">Last Name</label>

 <input type="text" id="lname" name="lastname" placeholder="Your last name.." >


 <label for="country">country</label>

 <select id="country" name="country">

     <option value="australia">Australia</option>

    <option value="canada">Canada</option>

    <option value="usa">USA</option>

   </select>

   

  <input type="submit" value="Submit" >

 </form>

</div>


</body>

</html>


3.CSS NAVIGATION BAR


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<style>

body { font-family:Arial; }

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    overflow: hidden;

    background-color: #333;

 }

 

 li {

    float: left;

 }

 

 li a {

    display: block;

    color: white;

    text-align: center;

    padding: 14px 16px;

    text-decoration: none;

 }

 

 li a:hover:not(.active) {

    background-color: #111;

 }

 

 .active {

    background-color: #4caf50;

 }

 </style>

 </head>

 <body>

 

 <ul>

  <li><a href="#home">Home</a></li>

  <li><a href="#news">News</a></li>

  <li><a href="#contact">Contact</a></li>

  <li style="float:right"><a class="active" href="#about">About</a></li>

  </ul>

  

  </body>

  </html>


4. CSS Menu Dropdown


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

</head>

<style>

body { font-family:Arial; }

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    overflow: hidden;

    background-color: #333;

}


li {

    float: left;

}


li a, .dropbtn {

    display: inline-block;

    color: white;

    text-align: center;

    padding: 14px 16px;

    text-decoration: none;

}


li a:hover, .dropdown:hover .dropbtn {

    background-color: Red;

}


li.dropdown {

    display: inline-block;

}


.dropdown-content {

    display: none;

    position: absolute;

    background-color: #f9f9f9;

    min-width: 160px;

    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);

    z-index: 1;

   

}


.dropdown-content a {

    color: black;

    padding: 12px 16px;

    text-decoration: none;

    display: block;

    text-align: left;

}


.dropdown-content a:hover {background-color: #f1f1f1}


.dropdown:hover .dropdown-content {

    display: block;

}

</style>

</head>

<body>


<ul>

  <li><a href="#home">Home</a></li>

  <li><a href="#news">News</a></li>

  <li class="dropdown">

   <a href="javascript:void(0)" class="dropbtn">Dropdown</a>

   <div class="dropdown-content">

    <a href="#">Link 1</a>

    <a href="#">Link 2</a>

    <a href="#">Link 3</a>

   </div>

  </li>

 </ul>

 

 <h3>Dropdown Menu inside a Navigation Bar</h3>

 <p>Hover over the "Dropdown" link to see the dropdown menu.</p>

</body>

</html>

PENERAPAN CRM PADA PERUSAHAAN KENTUCKY FRIED CHICKEN(KFC)

  Tidak semua perusahaan atau wirausahawan dapat memberikan sebuah produk yang dijual menyedari pentingnya sebuah pelayanan terhadap konsum...