Merge sort adalah algoritma pengurutan yang bekerja dengan memecah elemen menjadi bagian-bagian kecil dan menggabungkannya kembali dengan cara membandingkan dan menyusun elemen-elemennya secara terurut. Algoritma ini memiliki kompleksitas waktu sebesar O(n log n) pada kasus rata-rata dan terburuk.
Sandi Playfair ditemukan oleh ahli Fisika berkebangsaan Inggris bernama Sir Charles Wheatstone (1802 - 1875) namun dipromosikan oleh Baron Lyon Playfair (1819 - 1898) pada tahun 1854. Sandi Playfair pertama kali digunakan untuk tujuan-tujuan taktis oleh pasukan Inggris dalam Perang Boer II dan Perang Dunia I. Australia dan Jerman juga menggunakan sandi ini untuk tujuan yang sama dalam Perang Dunia II. Pada perkembangan selanjutnya, sandi ini tidak lagi digunakan oleh pasukan militer karena telah muncul berbagai perangkat enkripsi digital untuk menerjemahkannya.
Sandi Playfair ditemukan oleh ahli Fisika berkebangsaan Inggris bernama Sir Charles Wheatstone (1802 - 1875) namun dipromosikan oleh Baron Lyon Playfair (1819 - 1898) pada tahun 1854. Sandi Playfair pertama kali digunakan untuk tujuan-tujuan taktis oleh pasukan Inggris dalam Perang Boer II dan Perang Dunia I. Australia dan Jerman juga menggunakan sandi ini untuk tujuan yang sama dalam Perang Dunia II. Pada perkembangan selanjutnya, sandi ini tidak lagi digunakan oleh pasukan militer karena telah muncul berbagai perangkat enkripsi digital untuk menerjemahkannya.
Kode antara / Intermediate code merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi
Kode antara / Intermediate code merupakan hasil dari tahapan analisis, yang dibuat oleh kompilator pada saat mentranslasikan program dari bahasa tingkat tinggi
BAB I
PENDAHULUAN
Latar Belakang
Salah satu pendekatan yang dapat dilakukan untuk menyelesaikan masalah manajemen sains adalah pemrograman linear. Pemrograman linear merupakan kelompok teknik analisis kuantitatif yang mengandalkan model matematika atau model simbolik sebagai wadahnya. Artinya, setiap masalah yang kita hadapi dalam suatu sistem permasalahan tertentu perlu dirumuskan dulu dalam simbol-simbol matematika tertentu, jika kita inginkan bantuan pemrograman linear sebagai alat analisisnya.
Metode grafik merupakan salah satu metode yang dapat digunakan untuk menyelesaikan masalah pemrograman linear yang melibatkan dua peubah keputusan. Membahas mengenai masalah meminimumkan fungsi kendala bertanda ≥, fungsi kendala bertanda = tidak ada penyelesaian layak, tidak ada penyelesaian optimal, beberapa alternatif optimal, dan wilayah kelayakan yang tidak terikat dapat terjadi saat menyelesaikan masalah pemrograman linear dengan menggunakan prosedur penyelesaian grafik. Kasus-kasus ini juga dapat terjadi saat menggunakan metode simpleks.
Metode simplek untuk linier programming dikembangkan pertama kali oleh George Dantzing pada tahun 1947, kemudian digunakan juga pada penugasan di Angkatan Udara Amerika Serikat. Dia mendemonstrasikan bagaimana menggunakan fungsi tujuan (iso-profit) dalam upaya menemukan solosi diantara beberapa kemungkinan solosi sebuah persoalan linier programming.
Proses penyelesaiaanya dalam metode simplek, dilakukan secara berulang-ulang (iterative) sedemikian rupa dengan menggunakan pola tertentu (standart) sehingga solusi optimal tercapai.
Ciri lain dari metode simplek adalah bahwa setiap solusi yang baru akan menghasilkan sebuah nilai fungsi tujuan yang lebih besar daripada solosi sebelumnya.
Rumusan Masalah
Adapun rumusan masalah yang akan dibahas dalam makalah ini adalah sebagai berikut:
Bagaimana cara mencari nilai maksimum dengan menggunakan metode simpleks?
Bagaimana cara menyelesaikan masalah/kendala (syarat) bertanda “=”?
Bagaimana cara mencari nilai minimum dengan menggunakan metode simpleks?
Bagaimana cara membedakan antara asalah primal dan dual dalam program linear?
Kapan pemrograman linear dikatakan mengalami degenerasi?
Tujuan
Adapun tujuan dari penulisan makalah ini antara lain :
Dapat menyelesaikan masalah maksimasi dalam program linear
Dapat menyelesaikan masalah / kendala (syarat) bertanda “=” pada program linear
Dapat menyelesaikan masalah minimasi dalam program linear
Dapat mengetahui dan membedakan antara masalah primal dan dual dalam program linear
Dapat menyelesaikan masalah degeneracy / kemerosotan dalam program linear
BAB II
PEMBAHASAN
Masalah Maksimasi
Untuk menyelesaikan masalah maksimasi maka programasi linear harus lebih dahulu ditulis dalam bentuk standar. Dengan bentuk standar dimaksudkan adalah permasalahan programasi linear yang berwujud permasalahan maksimasi dengan batasan-batasan (kendala) yang bertanda kurang dari
Materi pasar saham yang menjelaskan mengenai rasio finansial yang merupakan salah satu pertimbangan investasi dalam bentuk angka-angka yang dikalkukasi
Materi pasar saham yang menjelaskan mengenai rasio finansial yang merupakan salah satu pertimbangan investasi dalam bentuk angka-angka yang dikalkukasi
Materi pasar saham yang menjelaskan mengenai rasio finansial yang merupakan salah satu pertimbangan investasi dalam bentuk angka-angka yang dikalkukasi
Materi pasar saham yang menjelaskan mengenai Cash Flow Statement yang merupakan salah satu laporan yang diterbitkan perusaaah yang dapat dipakai untuk analisis fundamental
2. Pendahuluan
Merge sort adalah metode pengurutan yang dilakukan
dengan memecah penampung elemen tepat menjadi 2
sampai tersisa hanya menjadi 1 partisi, kemudian
mengiterasi dengan membandingkan dan
menggabungkan secara berulang.
8. Proses - Iterasi Selesai
Setelah selesai, gabungkan elemen-elemen yang telah
terurut tadi sehingga membentuk tabel-tabel baru seperti
di gambar berikut
5 6 1 3 7 8 2 4
5 6 1 3 7 8 2 4
9. Proses - Perbandingan Kembali
Bandingkan:
● elemen pertama pada tabel pertama dengan elemen pertama pada tabel kedua dan
sebaliknya secara bergantian
● bandingkan elemen terakhir yang belum dimasukkan ke tabel baru (5) dengan
elemen lainya
5 6 1 3 7 8 2 4
1 3
10. Proses - Perbandingan Kembali
Bandingkan:
● Pada tabel kedua sudah habis
● bandingkan elemen terakhir yang belum dimasukkan ke tabel baru (5) dengan
elemen lainya (6) yang tersisa
5 6 1 3 7 8 2 4
1 3 5 6
11. Hasil Iterasi
Tabel yang baru yang siap dibandingkan dengan proses
yang sama
5 6 1 3 7 8 2 4
1 3 5 6 2 4 7 8
12. Perbandingan Tabel Baru
Lakukan perbandingan seperti sebelumnya
1 3 5 6 2 4 7 8
1 2 3 4 5 6 7 8
13. Pseudocode dengan List
function mergeSort(Input m: list) → list
if length(m) ≤ 1
→ m
var list left, right, result
var integer middle = length(m) / 2
for each x in m up to middle
begin
add x to left
end
for each x in m after middle
begin
add x to right
end
left = mergeSort(left)
right = mergeSort(right)
result = merge(left, right)
→ result
function merge(Input: left list,Input right: list) → list
list result
while (length(left) > 0 or length(right) > 0) do
begin
if (length(left) > 0 and length(right) > 0)
if first(left) ≤ first(right)
append first(left) to result
left = rest(left)
else
append first(right) to result
right = rest(right)
else if length(left) > 0
append first(left) to result
left = rest(left)
else if length(right) > 0
append first(right) to result
right = rest(right)
end
→ result
14. Kode C++
template <class M>
void myMerge( M arr[], int lb, int mid, int ub ) {
int i, j;
int size1 = mid - lb + 1;
int size2 = ub - mid;
M* tmpArray1 = new M[size1];
M* tmpArray2 = new M[size2];
for( i=0; i<size1; i++ ) {
tmpArray1[i] = arr[lb + i];
}
for( j=0; j<size2; j++ ) {
tmpArray2[j] = arr[mid + 1 + j];
}
i = 0; j = i;
… // lanjut ke slide berikutnya
15. Kode C++ - lanjutan
for( int k=lb; k<=ub; k++ ) {
if (i == size1) { // Kalau range array pertama lebih kecil
arr[k] = tmpArray2[j];
j++;
} else if (j == size2) { // Kalau range array kedua lebih kecil
arr[k] = tmpArray1[i];
i++;
} else if ( tmpArray1[i] < tmpArray2[j] ) {
arr[k] = tmpArray1[i];
i++;
} else {
arr[k] = tmpArray2[j];
j++;
}
}
delete[] tmpArray1; //
delete[] tmpArray2; // Bersihkan alokasi arraynya
}
16. Kode C++ - lanjutan 2
void mergeSort( int arr[], int lb, int ub ) {
if (ub - lb > 1) {
int mid = (lb + ub) / 2;
mergeSort(arr, lb, mid);
mergeSort(arr, mid + 1, ub);
myMerge(arr, lb, mid, ub);
} else {
if (arr[ub] < arr[lb]) {
int tmp = arr[ub];
arr[ub] = arr[lb];
arr[lb] = tmp;
}
}
}
// ==================== akhir dari prosedur ====================
17. Kode C++ - lanjutan 3 (main)
#include <iostream>
using namespace std;
int main() {
int numbers[] = { 8, 40, 1, 5, 0, 9, 6, 4, 3, -1, 5 };
mergeSort(numbers, 0, 10);
for (int i=0; i<10; i++) {
cout << numbers[i];
cout << “ | “;
}
}