Selasa, 06 Juni 2017

Struktur Data Array


 
3.Kurangi bobot total dengan bobot yang telah dimasukkan, kemudian bandingkan bobot total sekarang dengan bobot terbesar selanjutnya. Demikian seterusnyasampai seluruh bobot di dalam barisan selesai dibandingkan.4.Jika bobot total menjadi nol, maka terdapat solusi superincreasing knapsack,tetapi jika tidak nol, maka tidak ada solusinya.Contoh :Misalkan bobot-bobot yang membentuk barisan superincreasing adalah(2,3,6,13,27,52) dan diketahui bobot knapsack (m) = 70. untuk mencari nilai bi,caranya adalah sebagai berikut:1.Bandingkan 70 dengan nilai terbesar yaitu 52. Karena 52< 52="18," 13="5">5,maka 6 tidak termasuk.2. Bandingkan bobot 3 dengan bobot total. Karena 3<5, 3="2." 2="0." 70 =" (1×2)"m="105," n="31." 105 =" 62" 105 =" 93" 105 =" 81" 105 =" 88" 105 =" 102" 105=" 37" 1=" 1" 1=" 1"> n. n-1= 1 + km => n. n-1= (1+km)/n, k sembarang bilangan bulat..Kalikan setiap kriptogram dengan n-1 mod m, lalu nyatakan hasil kalinyasebagai penjumlahan elemen-elemen kunci privat untuk memperoleh plainteksdengan menggunakan algoritma pencarian solusi superincreasingknapsack.Contoh:Dari contoh sebelumnya, dengan menggunakan kunci privat(62,93,81,88,102,37). Di sini, n=31 dan m=105. Nilai n-1 diperoleh dari: n-1 =
(1+105k)/31, dengan mencoba k=0,1,2,…, maka kita akan memperoleh nilai n
-1 jika k=18.n-1 = (1+105.18)/31 = 61Plain teks yang berkoresponden diperolehkembali dengan cara membuka di awal yang telah kita bahas. Hasilnya akandiperoleh174.61 mod 105 = 9 , bobotnya 3+6, berkoresponden dengan011000280.61 mod 105 = 70 , bobotnya 2+3+13+52, berkorespondendengan110101333.61 mod 105 = 48 , bobotnya 2+6+13+27, berkorespondendengan 101110Jadi plainteksnya adalah: 011000 110101 101110Sourcenya#include#include#include#define TRUE 1#define FALSE 0int recursiveKnapsack(int target, int candidate, int weights[],int taken[], int N);void initTaken(int taken[], int N);int main(void){const int N = 5;
 
int weights[] = {3, 1, 2, 3, 8};int taken[N];initTaken(taken, N);assert(recursiveKnapsack(7, 0, weights, taken, N));assert( taken[0] == TRUE &&taken[1] == TRUE &&taken[2] == FALSE &&taken[3] == TRUE &&taken[4] == FALSE);initTaken(taken, N);assert(recursiveKnapsack(10, 0, weights, taken, N));assert(t aken[0] == FALSE &&taken[1] == FALSE &&taken[2] == TRUE &&taken[3] == FALSE &&taken[4] == TRUE);initTaken(taken, N);assert(!recursiveKnapsack(30, 0, weights, taken, N));initTaken(taken, N);assert(recursiveKnapsack(17, 0, weights, taken, N));assert( taken[0] == TRUE &&taken[1] == TRUE &&taken[2] == TRUE &&taken[3] == TRUE &&taken[4] == TRUE);return EXIT_SUCCESS;}int recursiveKnapsack(int target, int candidate, int weights[],int taken[], int N){if (target == 0)return TRUE;if (target <> N-1)return FALSE;if (recursiveKnapsack(target
 – 
weights[candidate], candidate + 1,weights,taken, N)){taken[candidate] = TRUE;return TRUE;}
 
 return recursiveKnapsack(target, candidate + 1, weights, taken,N);}void initTaken(int taken[], int N){int i;for (i = 0; i <>
Share:

0 komentar:

Posting Komentar

BTemplates.com

Cari Blog Ini

Diberdayakan oleh Blogger.

Arsip Blog