Rabu, 22 Desember 2021

IMPLEMENTASI ALGORITMA DIVIDE DAN CONQUER PADA SORTING DAN SEARCHING

Nama    : Aldo Fernanda

NPM    : 20312055

Kelas    : IF 20 B

IMPLEMENTASI ALGORITMA DIVIDE DAN CONQUER PADA SORTING DAN SEARCHING

Algoritma Divide and Conquer adalah algoritma yang sangat populer pada di dunia ilmu komputer. Algoritma Divide and Conquer adalah algoritma yang memiliki prinsip untuk membagi-bagi permasalahan yang terlalu besar menjadi beberapa atau sub-masalah yang lebih kecil sehingga menjadi mudah untuk diselesaikan. sub-sub masalah yang telah dibagi menjadi beberapa bagian yang lebih kecil kemudian akan dicari solusinya, setelah mendapatkan solusinya, solusi dari sub-sub masalah tersebut akan digabung menjadi satu untuk menyelesaikan masalah awal atau masalah utama. 


Algoritma Sorting atau algoritma pengurutan adalah suatu langkah yang sistematis dan berurutan. atau algoritma untuk meletakkan kumpulan data ke dalam suatu urutan tertentu berdasarkan satu atau beberapa "kunci" pada tiap-tiap elemen.


Algoritma Searching atau algoritma pencarian adalah algoritma yang menerima suatu argumen "kunci" dan dengan menggunakan suatu langkah-langkah tertentu akan mencari "kunci" tersebut. Setelah proses pencarian dilakukan, akan diperoleh salah satu dari dua kemungkinan, yaitu data berhasil ditemukan, atau data tidak ditemukan.


Divide and Conquer Pada Sorting

1. Selection Sort

Selection Sort adalah sebuah teknik pengurutan dengan cara mencari nilai tertinggi / terendah pada suatu kumpulan data (array) kemudian menempatkan nilai tersebut pada tempatnya. Algoritma ini dibagi menjadi dua berdasarkan urutan datanya, yaitu : dari kecil ke besar (Ascending), dan dari besar ke kecil (Descending). Algoritma ini pada dasarnya memilih nilai yang terbesar/terkecil, dan menukarkan nilai tersebut dengan nilai disebelah kiri/kanan pada data. Dan kemudian langkah tersebut diulang secara terus menerus hingga data tersusun. Algoritma ini tidak efektif bila digunakan pada array yang jumlah nya besar karena kompleksitas dari algoritma ini adalah O(x2) dimana n adalah jumlah item.


2. Insertion Sort

Algoritma Insertion Sort adalah sebuah teknik pengurutan dengan cara membandingkan dan mengurutkan dua data pertama pada suatu kumpulan data (array). Algoritma ini pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, data yang belum diurutkan, dan data yang sudah diurutkan. Elemen data pertama diambil dari bagian data yang belum diurutkan dan diletakkan pada posisinya di bagian data yang telah diurutkan. Algoritma ini dapat mengurutkan data secara ascending dan descending. Algoritma ini tidak efektif bila digunakan pada array dengan jumlah besar, karena kompleksitas algoritma ini adalah O() dimana n adalah jumlah item.


3. Quick Sort


Algoritma Quick Sort adalah salah satu algoritma pengurutan data, algoritma ini menggunakan teknik pemecahan data menjadi beberapa bagian atau partisi, sehingga algoritma ini disebut juga dengan nama partition exchange sort. 

Algoritma ini mengambil salah satu elemen pada suatu data secara acak (tengah) yang disebut dengan pivot lalu menyimpan semua elemen yang lebih kecil disebelah kiri pivot dan elemen yang lebih besar pada sebelah kanan pivot. Langkah tersebut dilakukan secara berulang sampai semua elemen menjadi terurut.


Divide and Conquer Pada Searching

1. Binary Search

Algoritma Binary Search atau algoritma pencarian Biner, salah satu teknik pencarian yang dilakukan secara berulang kali  membagi setengah dari jumlah data yang dicari sehingga dapat memperkecil lokasi pencarian. Dengan begitu dapat mempercepat waktu pencarian. Jika ditemukan kecocokan pada suatu data dengan data yang dicari maka pencarian akan selesai, jika tidak, pencarian akan terus dilakukan hingga akhir dari bagian data tersebut. Algoritma ini cocok untuk mencari pada jumlah data yang banyak, karena kompleksitas algoritma ini adalah O(log n) dimana n adalah jumlah item. Tetapi sebelum menggunakan algoritma ini, pastikan data sudah terurut. Jika tidak maka pencarian tidak bisa dilakukan.


2. Linear Search

Algoritma Linear Search atau pencarian linear, adalah salah satu teknik dari pencarian data, teknik ini mencari data dengan mengecek semua data secara satu per satu. Apabila ditemukan kecocokan pada data dengan data yang dicari, maka pencarian akan selesai. Jika tidak, pencarian akan terus dilakukan hingga data terakhir. Algoritma ini tidak efektif jika digunakan pada data yang besar karena kompleksitas algoritma ini adalah O(n) dimana n adalah jumlah item. Dan jika data yang dicari berada pada bagian paling akhir dari kumpulan data tersebut (array), maka pencarian tetap harus dilakukan dari yang paling awal, sehingga membutuhkan waktu yang lama. 

Rabu, 15 Desember 2021

Sejarah, Definisi dan Cara Kerja Algoritma Divide and Conquer

 Sejarah, Definisi dan Cara Kerja Algoritma Divide and Conquer

 Sejarah Divide & Conquer


pada zaman dahulu, divide and conquer merupakan strategi militer yang dikenal dengan nama divide ut imperes. saat ini strategi tersebut menjadi strategi fundamental di dalam imlmi komputer dengan nama divide and qonqer. algoritma divide dan qonquer ini ditemukan oleh seorang ilmuan 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.


 DEFINISI


Divide : membagi masalah menjadi beberaapa upa-masalah yang memiliki kemiripan dengan masalah semula namun yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama)


Conquer : memecahkan (menyelesaikan) masing-masing upa-masalah (secara rekursif)


Cara Kerja Divide and Conquer


Objek masalah yang di bagi adalah masukan (input) atau instances yang berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif. Algoritma ini dapat berjalan baik pada persoalan yang bertipe rekursif ( perulangan dengan memanggil dirinya sendiri ). Dengan demikian, algoritma ini dapat diimplementasikan dengan cara iteratif ( perulangan biasa ), karena pada prinsipnya iteratif hampir sama dengan rekursif.


Salah satu penggunaan algoritma ini yang paling populer adalah dalam hal pengolahan data yang bertipe array ( elemen larik ). Mengapa ? Karena pengolahan array pada umumnya selalu menggunakan prinsip rekursif atau iteratif. Penggunaan secara spesifik adalah untuk mencari nilai minimal dan maksimal serta untuk mengurutkan elemen array.


Dalam hal pengurutan ini ada empat macam algoritma pengurutan yang berdasar pada algoritma Divide and Conquer, yaitu :


a. Merge sort


b. Insert sort


c. Quick sort


d. Selection sort.

Senin, 04 Oktober 2021

Algoritma Sorting dengan Metode Insertion Sort

Nama    : Aldo Fernanda

NPM    : 20312055


Algoritma Sorting

Algoritma Sorting adalah urutan langkah sistematis yang bertujuan untuk mengurutkan suatu susunan angka acak dengan urutan tertentu.

Metode Penyelesain

Insertion Sort

Insertion Sort merupakan algoritma yang efisien untuk mengurutkan angka yang mempunyai jumlah elemen sedikit. Dengan Input adalah deretan angka sejumlah n buah dan Outputnya permutasi (pengurutan) sejumlah n angka dari input yang sudah terurut secara ascending maupun descending.

Metode penyisipan (Insertion sort) bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array berhasil diurutkan. Metode ini mengurutkan bilangan-bilangan yang telah dibaca; dan berikutnya secara
berulang akan menyisipkan bilangan-bilangan dalam array yang belum terbaca ke sisi kiri array yang telah terurut.
Insertion Sort bekerja seperti banyak orang yang sedang mengurutkan kartu di tangan. Dimulai dengan tangan kiri yang kosong dan kartunya tertumpuk di meja. Selanjutnya kita ambil satu persatu kartu di meja dan diletakkan di tangan kiri dengan posisi yang benar (terurut). Untuk menemukan posisi yang banar, maka kita harus membandingkan satu persatu kartu yang ada (di tangan kiri) secara berurutan.

Contoh:
Urutkan angka 5,2,4,6,1,4 secara ascending

Langkah-langkahnya sebagai berikut:
Kelebihan :
  1. Mudah diimplementasikan
  2. Sangat Efisien untuk jumlah data yang sedikit
Kekurangan :
  1. Tidak cocok untuk data berjumlah banyak

Senin, 29 Maret 2021

PROCCESS SYNCHRONIZATION || PROSES SINKRONISASI PADA SISTEM OPERASI

Assalamualaikum Warahmatullahi Wabarokatuh.
Hello Techolic! Perkenalkan saya Aldo Fernanda. Saya mahasiswa di Universitas Teknokrat Indonesia. Data lengkap saya sebagai berikut:

Nama : Aldo Fernanda
NPM : 20312055
Kelas : IF 20 B
Prodi : S1 Informatika

A. Pengertian Sinkronisasi

Sinkronisasi adalah proses pengaturan jalannya beberapa proses pada saat yang bersamaan.Tujuan utama sinkronisasi adalah menghindari terjadinya inkonsistensi data karena pengaksesan oleh beberapa proses yang berbeda (mutual exclusion) serta untuk mengatur urutan jalannya proses-proses sehingga dapat berjalan dengan lancar dan terhindar dari deadlock atau starvation.

B. Critical Section

Critical section adalah segmen kode yang mengakses data yang digunakan proses secara bersama-sama yang dapat membawa proses itu ke bahaya race conditionRace condition adalah suatu kondisi dimana dua atau lebih proses mengakses shared memory/sumber daya pada saat yang bersamaan dan hasil akhir dari data tersebut tergantung dari proses mana yang terakhir selesai dieksekusi sehingga hasil akhirnya terkadang tidak sesuai dengan yang dikehendaki.

1. Solusi Critical Section

3 Syarat Critical Section

  • Mutual Exclusion
  • Progress
  • Bounded Waiting

a. Solusi Perangkat Lunak

Macam - Macam Algoritma :
  • Algoritma I -Dekker
    Algoritma I mencoba mengatasi masalah critical section untuk dua proses. Algoritma ini menerapkan sistem bergilir kepada kedua proses yang ingin mengeksekusi critical section, sehingga kedua proses tersebut harus bergantian menggunakan critical section.Bentuk : int turn = 0 atau int turn = 1Stallings, william Sistem Operasi Edisi Keempat . Jakarta : Indeks, Gramedia

  • Algoritma II
    Algoritma II juga mencoba memecahkan masalah critical section untuk dua proses. Algoritma ini mengantisipasi masalah yang muncul pada algoritma I dengan mengubah penggunaan variabel turn dengan variabel flag. Variabel flag menyimpan kondisi proses mana yang boleh masuk critical section. Proses yang membutuhkan akses ke critical section akan memberikan nilai flag-nya true. Sedangkan proses yang tidak membutuhkan critical section akan men-set nilai flagnya bernilai false.

  • Algoritma III-Peterson
    Algoritma III ditemukan oleh G.L. Petterson pada tahun Algoritma ini adalah solusi untuk memecahkan masalah critical section pada dua proses. Ide dari algoritma ini adalah menggabungkan variabel yang di-sharing pada Algoritma I dan Algoritma II, yaitu variabel turn dan variabel flag. Sama seperti pada Algoritma I dan II, variabel turn menunjukkan giliran proses mana yang diperbolehkan memasuki critical section, dan variabel flag menunjukkan apakah suatu proses membutuhkan akses ke critical section atau tidak.

  • Algoritma Tukang Roti
    Algoritma untuk solusi proses ini dinamakan algoritma bakery (tukang roti) / Lamport's Baker Algorithm dan berdasarkan algoritma penjadwalan yang biasa digunakan oleh tukang roti, es krim, registrasi sepeda motor dan sebagainya. Para pelanggan yang ingin membeli roti sebelumnya harus mengambil nomor urut terlebih dahulu dan urutan orang yang boleh membeli ditentukan oleh nomor urut yang dimiliki masing-masing pelanggan tersebut.


b. Perangkat Sinkronisasi
  • Test and Set : instruksi atomik
  • Semaphore : variabel yang hanya dapat diakses oleh dua buah operasi standar
  • Monitor : menangani masalah yang muncul karena pemakaian semafor
  • Java Monitor : implementasi dari monitor
  • Readers / Writers
  • Test and Set
    Sebagian besar sistem komputer saat ini menyediakan instruksi instruksi perangkat keras khusus yang mengizinkan kita untuk menguji dan memodifikasi nilai dari sebuah variabel. Instruksi ini disebut instruksi TestAndSet(). Instruksi ini bersifat atomik, yaitu instruksi yang tidak dapat diinterupsi. Kita dapat menggunakan instruksi khusus ini untuk memecahkan masalah critical section yang sederhana.

  • Semaphore
    Semaphore adalah pendekatan yang dikemukakan Djikstra. Prinsip semaphore adalah sebagai berikut : Dua proses atau lebih dapat bekerja sama dengan menggunakan penanda-penanda sederhana. Proses dipaksa berhenti sampai proses memperoleh penanda tertentu. Sembarang kebutuhan koordinasi kompleks dapat dipenuhi dengan strukstur penanda yang sesuai kebutuhannya. Variabel khusus untuk penandaan ini disebut semaphore.

    Jenis Semaphore :
    - Binary semaphore : Semaphore ini hanya memiliki nilai 1 atau 0. Sering juga disebut sebagai semafor primitif
    - Counting semaphore : Semaphore ini memiliki nilai 0, 1, serta integer lainnya. Banyak sistem operasi yang tidak secara langsung mengimplementasikan semaphore ini, tetapi dengan memanfaatkan binary semaphore.

  • Monitor
    Monitor adalah suatu tipe data abstrak yang dapat mengatur aktivitas serta penggunaan resource oleh beberapa thread. Ide monitor pertama kali diperkenalkan oleh C.A.R Hoare dan Per Brinch-Hansen pada awal 1970-an.Monitor merupakan kumpulan dari prosedur, variabel, dan struktur data dalam satu modul. Monitor hanya dapat diakses dengan menjalankan fungsinya. Dilakukan untuk melindungi variabel dari akses yang tidak sah dan juga mengurangi terjadinya error.

  • Monitor Java
    Mengimplementasikan monitor. Monitor JVM bekerja dengan object locking dan method-method wait() serta notify(). Monitor JVM dapat digunakan dengan menggunakan keyword synchronized. Monitor JavaMethod-method tersebut adalah:void wait(). thread yang memanggil method ini akan masuk ke waiting queue.void wait(long timeout) dan void wait(long timeout, int nanos).void notify(). Membangunkan satu thread yang ada di waiting queue yang dipilih secara random.void notifyAll().

  • Readers / Writers
    Salah satu dari sekian banyak permasalahan sinkronisasi yang sering terjadi di dunia nyata, yaitu ketika ada dua jenis proses readers dan writers saling berbagi (shared) data dan mengakses database secara paralel. Proses yang pertama (reader) bertugas untuk membaca data, sedangkan proses kedua bertugas untuk menulis data baru/mengupdate nilai dalam data (writer).

    Kondisi Readers / Writers Kondisi berikut harus dipenuhi oleh readers dan writers:
    a. Maksimal hanya ada satu writer yang mengubah data. Jika suatu writer sedang mengubah data, maka tidak ada satupun reader yang diperbolehkan untuk membaca data.
    b. Dalam suatu waktu diperbolehkan lebih dari satu reader membaca data. Ketika data sedang dibaca, tidak ada writer yang boleh mengubah data.



  • Alamat Blog Dosen : https://syaifulahdan.wordpress.com
  • Alamat web Program studi, Fakultas, Universitas : http://ti.ftik.teknokrat.ac.id, http://ftik.teknokrat.ac.id, www.teknokrat.ac.id
  • Nama Mahasiswa : Aldo Fernanda
Sekian dulu artikel kali ini, semoga bermanfaat. Jangan lupa share ketemen-temen ya guys. Terimakasih.
Wassalamu'alaikum Warahmatullahi Wabarokatuh.

Selasa, 16 Maret 2021

Contoh Program Array 1 Dimensi | Syntax Array 1 Dimensi

 Assalamualaikum Warahmatullahi Wabarokatuh.

Hello Techolic! Perkenalkan saya Aldo Fernanda. Saya mahasiswa di Universitas Teknokrat Indonesia. Data lengkap saya sebagai berikut:

Nama : Aldo Fernanda
NPM : 20312055
Kelas : IF 20 B
Prodi : S1 Informatika

Rabu, 03 Maret 2021

Program Switch Case Pada C# || Tutorial Switch Case C# || Program Hitung Gaji Karyawan

Assalamualaikum Warahmatullahi Wabarokatuh.
Hello Techolic! Perkenalkan saya Aldo Fernanda. Saya mahasiswa di Universitas Teknokrat Indonesia. Data lengkap saya sebagai berikut:

Nama : Aldo Fernanda
NPM : 20312055
Kelas : IF 20 B
Prodi : S1 Informatika

Contoh Program Switch Case

Berikut ini adalah contoh source code dari Program Switch Case berupa pemilihan program Gaji Kayawan atau Penjumlahan Nilai:

Kamis, 07 Januari 2021

Perbedaan Proses dan Thread | The Difference between a Process and a Threads

Assalamualaikum Warahmatullahi Wabarokatuh. Hello Techolic! Perkenalkan saya Aldo Fernanda. Saya mahasiswa di Universitas Teknokrat Indonesia. Data lengkap saya sebagai berikut:

Nama : Aldo Fernanda
NPM : 20312055
Kelas : IF 20 B
Prodi : S1 Informatika

Single Instruction Stream Multiple Data Stream (SIMD) || Multi Processor Organitations

Assalamualaikum Warahmatullahi Wabarokatuh. Hello Techolic! Perkenalkan saya Aldo Fernanda. Saya mahasiswa di Universitas Teknokrat Indonesia. Data lengkap saya sebagai berikut:

Nama : Aldo Fernanda
NPM : 20312055
Kelas : IF 20 B
Prodi : S1 Informatika

Kali ini saya akan membagikan materi tentang Single Instruction Stream Multiple Data Stream (SIMD) || Multi Processor Organitations, and let's check this out!!!

1. Pengertian Single Instruction Stream Multiple Data Stream (SIMD)

SIMD adalah satu unit kontrol yang mengeksekusi aliran tunggal instruksi, tetapi lebih dari satu elemen pemroses. Mesin SIMD secara umum mempunyai karakteristik sbb:
  • Mendistribusi proses ke sejumlah besar hardware
  • Beroperasi terhadap berbagai elemen data yang berbeda
  • Melaksanakan komputasi yang sama terhadap semua elemen data

Peningkatan kecepatan pada SIMD proporsional dengan jumlah hardware (elemen pemroses) yang tersedia. SIMD bertugas untuk menyesuaikan kontras dalam citra digital atau menyesuaikan volume audio digital. Desain CPU modern termasuk instruksi SIMD dalam rangka meningkatkan kinerja multimedia yang digunakan.

2. Keuntungan SIMD

  • Keuntungan SIMD antara lain sebuah aplikasi adalah salah satu dimana nilai yang sama sedang ditambahkan ke (atau dikurangkan dari) sejumlah besar titik data, operasi umum di banyak multimedia aplikasi. Salah satu contoh akan mengubah kecerahan gambar. Setiap pixel dari suatu gambar terdiri dari tiga nilai untuk kecerahan warna merah (R), hijau (G) dan biru (B) bagian warna. Untuk mengubah kecerahan, nilai-nilai R, G dan B yang dibaca dari memori, nilai yang ditambahkan dengan (atau dikurangi dari) mereka, dan nilai-nilai yang dihasilkan ditulis kembali ke memori.
  • Dengan prosesor SIMD ada dua perbaikan proses ini. Untuk satu data dipahami dalam bentuk balok, dan sejumlah nilai-nilai dapat dimuat sekaligus. Alih-alih serangkaian instruksi mengatakan “mendapatkan pixel ini, sekarang mendapatkan pixel berikutnya”, prosesor SIMD akan memiliki instruksi tunggal yang efektif mengatakan “mendapatkan n piksel” (dimana n adalah angka yang bervariasi dari desain untuk desain). Untuk berbagai alasan, ini bisa memakan waktu lebih sedikit daripada “mendapatkan” setiap pixel secara individual, seperti desain CPU tradisional.
  • Keuntungan lain adalah bahwa sistem SIMD biasanya hanya menyertakan instruksi yang dapat diterapkan pada semua data dalam satu operasi. Dengan kata lain, jika sistem SIMD bekerja dengan memuat delapan titik data sekaligus, add operasi yang diterapkan pada data akan terjadi pada semua delapan nilai pada waktu yang sama. Meskipun sama berlaku untuk setiap desain prosesor super-skalar, tingkat paralelisme dalam sistem SIMD biasanya jauh lebih tinggi.

3. Kekurangan SIMD

  • Tidak semua algoritma dapat vectorized. Misalnya, tugas aliran-kontrol-berat seperti kode parsing tidak akan mendapat manfaat dari SIMD.
  • Ia juga memiliki file-file register besar yang meningkatkan konsumsi daya dan area chip.
  • Saat ini, menerapkan algoritma dengan instruksi SIMD biasanya membutuhkan tenaga manusia, sebagian besar kompiler tidak menghasilkan instruksi SIMD dari khas Program C, misalnya vektorisasi dalam kompiler merupakan daerah aktif penelitian ilmu komputer.
  • Pemrograman dengan khusus SIMD set instruksi dapat melibatkan berbagai tantangan tingkat rendah.
  • SSE (Streaming SIMD Ekstensi) memiliki pembatasan data alignment, programmer akrab dengan arsitektur x86 mungkin tidak mengharapkan ini.
  • Mengumpulkan data ke dalam register SIMD dan hamburan itu ke lokasi tujuan yang benar adalah rumit dan dapat menjadi tidak efisien.
  • Instruksi tertentu seperti rotasi atau penambahan tiga operan tidak tersedia dalam beberapa set instruksi SIMD.
  • Set instruksi adalah arsitektur-spesifik: prosesor lama dan prosesor non-x86 kekurangan SSE seluruhnya, misalnya, jadi programmer harus menyediakan implementasi non-Vectorized (atau implementasi vectorized berbeda) untuk mereka.
  • Awal MMX set instruksi berbagi register file dengan tumpukan floating-point, yang menyebabkan inefisiensi saat pencampuran kode floating-point dan MMX. Namun, SSE2 mengoreksi ini.
SIMD dibagi menjadi beberapa bentuk lagi yaitu :
  1. Exclusive-Read, Exclusive-Write (EREW) SM SIMD
  2. Concurent-Read, Exclusive-Write (CREW) SM SIMD
  3. Exclusive-Read, Concurrent-Write (ERCW) SM SIMD
  4. Concurrent-Read, Concurrent-Write (CRCW) SM SIMD

Sekian dulu artikel kali ini, semoga bermanfaat. Jangan lupa share ketemen-temen ya guys. Terimakasih.
Wassalamu'alaikum Warahmatullahi Wabarokatuh.

IMPLEMENTASI ALGORITMA BRANCH & BOUND

Nama     : Aldo Fernanda NPM      : 20312055   IMPLEMENTASI ALGORITMA BRANCH & BOUND Sebagaimana pada algortima runut-balik, algoritma B...