Upload
lekien
View
214
Download
0
Embed Size (px)
Citation preview
7
4 HASIL DAN PEMBAHASAN
Studi Pendahuluan
Salah satu bahasan dalam aljabar linier yang merupakan kunci penting
dalam latis adalah proses ortogonalisasi Gram-Schmidt. Proses ini akan menjadi
ide utama dalam pembentukan algoritme LLL. Berikut ini definisi proses
ortogonalisasi Gram-Schmidt.
Ortogonalisasi Gram-Schmidt
Misalkan ℬ = {𝐛1, 𝐛2, … , 𝐛𝑛} adalah himpunan n vektor bebas linier dalam
ruang vektor ℝ𝑚. Maka dapat dikonstruksi barisan bagian dari 𝑛 vektor yang
saling ortogonal ℬ∗ = {𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ } dimana
𝐛1∗ = 𝐛1,
𝐛𝑗∗ = 𝐛𝑗 −∑𝜇𝑗,𝑖
𝑗−1
𝑖=1
𝐛𝑖∗
dengan 𝑗 = 2, 3, … , 𝑛 dan
𝜇𝑗,𝑖 =𝐛𝑗 . 𝐛𝑖
∗
𝐛𝑖∗. 𝐛𝑖
∗.
Jika himpunan ℬ = {𝐛1, 𝐛2, … , 𝐛𝑛} adalah bebas linier, maka ℬ merupakan
basis untuk ⟨ℬ⟩ = {∑ 𝑥𝑗𝐛𝑗𝑛𝑗=1 /𝑥𝑗 ∈ ℝ} , dan jika ℬ∗ = {𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ } adalah
hasil ortogonalisasi Gram-Schmidt dari ℬ, maka ℬ∗ juga merupakan basis untuk ⟨ℬ⟩. Namun hal ini tidak berlaku secara umum dalam latis, jika ℬ adalah basis
untuk latis yang dibangkitkan oleh ℬ, tidak harus ℬ∗ merupakan basis untuk latis
tersebut.
Kompleksitas Gram-Schmidt
Dalam ortogonalisasi Gram-Schmidt terlihat bahwa banyaknya operasi
aritmetik yang dilibatkan dalam proses tersebut adalah 𝑂(𝑛3). Namun, belum
dapat disimpulkan bahwa waktu eksekusi (running time) pada ortogonalisasi
Gram-Schmidt adalah polinomial.
Diasumsikan bahwa matriks B yang digunakan adalah matriks bilangan
bulat. Perhatikan bahwa langkah ke-j dari ortogonalisasi Gram-Schmidt dapat
dirumuskan ulang sebagai
𝐛𝑗∗ = 𝐛𝑗 +∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖 (1)
untuk suatu 𝜐𝑗𝑖 ∈ ℝ. Karena 𝐛𝑗∗ ortogonal ke 𝐛𝑡 untuk setiap 𝑡 < 𝑗 maka diperoleh
𝐛𝑡. 𝐛𝑗∗ = ( 𝐛𝑡. 𝐛𝑗) + 𝐛𝑡.∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖
⇔ 𝟎 = ( 𝐛𝑡. 𝐛𝑗) + 𝐛𝑡.∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖
8
⇔ 𝐛𝑡.∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖 = −( 𝐛𝑡. 𝐛𝑗). (2)
Untuk 𝑡 = 1, 2, … , 𝑗 − 1 , persamaan tersebut dapat dituliskan dalam bentuk
matriks
(
𝐛1. ∑ 𝜐𝑗𝑖𝑗−1𝑖=1 𝐛𝑖
𝐛2. ∑ 𝜐𝑗𝑖𝑗−1𝑖=1 𝐛𝑖
⋮
𝐛𝑗−1. ∑ 𝜐𝑗𝑖𝑗−1𝑖=1 𝐛𝑖
)
= −
(
𝐛1. 𝐛𝑗𝐛2. 𝐛𝑗⋮
𝐛𝑗−1. 𝐛𝑗)
.
Jika didefinisikan matriks
𝐁𝑗−1 = (𝐛1 𝐛2 … 𝐛𝑗−1)
dan matriks
𝐮𝑗 = (
𝜐𝑗1𝜐𝑗2⋮
𝜐𝑗,𝑗−1
),
maka persamaan (2) dapat ditulis sebagai
(
𝐛1. (𝐁𝑗−1𝐮𝑗)
𝐛2. (𝐁𝑗−1𝐮𝑗)
⋮𝐛𝑗−1. (𝐁𝑗−1𝐮𝑗))
= −
(
𝐛1. 𝐛𝑗𝐛2. 𝐛𝑗⋮
𝐛𝑗−1. 𝐛𝑗)
⇔ 𝐁𝑗−1𝑇 (𝐁𝑗−1𝐮𝑗) = −𝐁𝑗−1
𝑇 𝐛𝑗
⇔ (𝐁𝑗−1𝑇 𝐁𝑗−1)𝐮𝑗 = −𝐁𝑗−1
𝑇 𝐛𝑗. (3)
Persamaan (3) merupakan SPL dengan matriks koefisien 𝐁𝑗−1𝑇 𝐁𝑗−1 dan
vektor −𝐁𝑗−1𝑇 𝐛𝑗 adalah bilangan bulat. Dengan demikian, untuk 𝑠 = 1, 2, … , 𝑗 − 1
berdasarkan aturan Cramer diperoleh
𝜐𝑗𝑠 ∈ℤ
det(𝐁𝑗−1𝑇 𝐁𝑗−1)
=ℤ
det (ℒ(ℬ𝑗−1))2.
Hasil ini digunakan untuk memberi batas pada koefisien pada koefisien 𝜇𝑗𝑖.
Misalkan 𝐷𝑗−1 = det(𝐁𝑗−1𝑇 𝐁𝑗−1) dan dikalikan nilainya dengan kedua ruas dari
persamaan (1) maka diperoleh
𝐷𝑗−1𝐛𝑗∗ = 𝐷𝑗−1𝐛𝑗 +∑(𝐷𝑗−1𝜐𝑗𝑖)
𝑗−1
𝑖=1
𝐛𝑖
merupakan persamaan yang semua koefisien vektornya adalah bilangan bulat. Ini
berarti semua penyebut dari bilangan dalam vektor 𝐛𝑗∗ adalah faktor 𝐷𝑗−1.
Kemudian
𝜇𝑗,𝑖 =𝐛𝑗 . 𝐛𝑖
∗
𝐛𝑖∗. 𝐛𝑖
∗
=𝐷𝑖−1(𝐛𝑗 . 𝐛𝑖
∗)
𝐷𝑖−1(𝐛𝑖∗. 𝐛𝑖
∗)
9
=𝐛𝑗(𝐷𝑖−1. 𝐛𝑖
∗)
(∏ ‖𝐛𝑠∗‖𝟐𝑖−1𝑠=1 )‖𝐛𝑖
∗‖𝟐 ∈
ℤ
𝐷𝑖.
Hasil ini menunjukkan bahwa penyebut dari 𝜇𝑗𝑖 harus membagi 𝐷𝑖.
Uraian diatas membuktikan bahwa bilangan-bilangan yang ada di dalam
vektor 𝐛𝑖∗ dan 𝜇𝑗𝑖 mempunyai penyebut paling banyak
max𝑘𝐷𝑘 ≤∏‖𝐛𝑘
∗‖𝟐𝑛
𝑖=𝑘
.
Akhirnya, besarnya bilangan polinomial karena ‖𝐛𝑗∗‖ ≤ ‖𝐛𝑗‖. Dengan
demikian, secara keseluruhan ortogonalisasi Gram-Schmidt mempunyai
kompleksitas waktu polinomial. Hal ini bermanfaat untuk menganalisis algoritme
LLL yang akan direkonstruksi, dimana cara kerja algoritme ini berdasarkan atas
proses ortogonalisasi Gram-Schmidt.
Rekonstruksi Algoritme LLL
Seperti yang telah dijelaskan dalam pendahuluan bahwa latis merupakan
obyek geometrik dalam ruang berdimensi-n yang dapat diilustrasikan sebagai
himpunan titik-titik yang teratur dan periodik. Definisi latis secara formal adalah
sebagai berikut.
Definisi 4.1
Misalkan ℬ = {𝐛1, 𝐛2, … , 𝐛𝑛} adalah himpunan n vektor bebas linier dalam
ruang vektor ℝ𝑚. Latis yang dibangkitkan oleh ℬ adalah himpunan
ℒ(ℬ) = {∑𝑥𝑗𝐛𝑗
𝑛
𝑗=1
/𝑥𝑗 ∈ ℤ}
yang beranggotakan semua kombinasi linier bilangan bulat dari ℬ. Dalam hal ini,
ℬ merupakan basis untuk ℒ(ℬ). Notasi “/” dibaca sebagai “dengan”.
Seperti dalam ruang vektor, basis ℬ untuk latis ℒ(ℬ) dapat
direpresentasikan sebagai matriks 𝐁 berukuran 𝑚 × 𝑛 yang kolom-kolomnya
merupakan vektor 𝐛𝑗:
𝐁 = (𝐛1 𝐛2 … 𝐛𝑛), sehingga ℒ(ℬ) dapat dituliskan sebagai perkalian matriks ℒ(𝐁) = {𝐁𝑥/𝑥 ∈ ℤ𝑛}. Dalam hal ini, 𝐁 merupakan bentuk matriks dari ℬ.
Terdapat kemiripan antara pengertian latis yang dibangkitkan oleh ℬ dengan
pengertian subruang vektor dalam ℝ𝑚 yang direntang oleh ℬ:
⟨ℬ⟩ = {∑𝑥𝑗𝐛𝑗
𝑛
𝑗=1
/𝑥𝑗 ∈ ℝ}.
Perbedaannya hanya terdapat pada bilangan yang digunakan pada kombinasi
linier. Pada latis ℒ(ℬ), kombinasi linier menggunakan koefisien dalam rentang
bilangan bulat (ℤ ⊆ ℝ) . Sedangkan pada ⟨ℬ⟩ , koefisien pada kombinasi linier
yang digunakan adalah rentang bilangan real (ℝ), sehingga dapat disimpulkan
bahwa jika ℬ adalah basis untuk ℒ(ℬ), maka ℬ juga merupakan basis untuk ⟨ℬ⟩. Namun hal ini tidak berlaku sebaliknya, jika ℬ adalah basis untuk ⟨ℬ⟩, belum
10
Gambar 3 Latis dengan basis
{(1,2),(4,1)} Gambar 4 Latis dengan basis
{(1,1)}
tentu ℬ juga basis untuk ℒ(ℬ). Misalkan dipilih basis ℬ1 = {(1,0), (0,1)} yang
merupakan basis baku untuk ℝ2, maka
ℒ(ℬ1) = {𝑥(1,0) + 𝑦(0,1)/𝑥, 𝑦 ∈ ℤ} = {(𝑥, 𝑦)/𝑥, 𝑦 ∈ ℤ} = ℤ2. Latis ℤ2 beserta basis diilustrasikan pada Gambar 1. Seperti pada ruang
vektor, basis suatu latis tidak tunggal. Pada Gambar 2, diilustrasikan bahwa ℤ2
dapat dibangkitkan oleh latis basis ℬ2 = {(2,1), (3,1)}. Sedangkan pada Gambar
3 merupakan contoh basis ℬ3 = {(1,2), (4,1)} yang bukan merupakan basis untuk
ℤ2 walaupun mempunyai rank penuh dalam ℝ2. Selanjutnya Gambar 4
merupakan sebuah contoh bahwa basis ℬ4 = {(1,1)} yang membentuk latis
ℒ(ℬ4) walaupun ℬ4 tidak memiliki rank penuh di dalam ℝ2.
Gambar 1 Latis dengan basis
{(1,0),(0,1)}
Gambar 2 Latis dengan basis
{(2,1),(3,1)}
11
Definisi 4.2
Dua basis 𝒜 dan ℬ dikatakan ekivalen, dinotasikan dengan 𝒜 ~ ℬ, jika dan
hanya jika 𝒜 dan ℬ membangkitkan latis yang sama, yaitu ℒ(𝒜) = ℒ(ℬ).
Definisi 4.3
Matriks U berukuran 𝑛 × 𝑛 disebut unimodular jika 𝐔 ∈ ℤ𝑛×𝑛 dan det(𝐔) =±1.
Contoh matriks unimodular: 𝐔 = (1 3 −70 −1 2−1 0 2
) dengan det(𝐔) = −1.
Proposisi 4.1
Invers dari matriks unimodular juga merupakan matriks unimodular.
Bukti:
Misalkan 𝐔 = (𝑢𝑖𝑗) adalah matriks unimodular berukuran 𝑛 × 𝑛 dari
asumsi diperoleh 𝑢𝑖𝑗 ∈ ℤ dan det(𝐔) = ±1. Berdasarkan rumus matriks invers,
maka
𝐔−𝟏 =1
det(𝐔)(𝜇𝑖𝑗)
𝑇, (4)
dimana 𝜇𝑖𝑗 adalah kofaktor dari 𝑢𝑖𝑗. Karena 𝑢𝑖𝑗 ∈ ℤ, dari definisi kofaktor, jelas
bahwa 𝜇𝑖𝑗 ∈ ℤ sehingga
(𝜇𝑖𝑗)𝑇 ∈ ℤ𝑛×𝑛.
Disamping itu,
𝐔−𝟏 𝐔 = 𝐈 ⇒ det(𝐔−𝟏 𝐔) = det(𝐈)
⇒ det(𝐔−𝟏 )det (𝐔) = det(𝐈)
⇒ det(𝐔−𝟏) =1
det (𝐔).
Karena det(𝐔) = ±1, maka
det(𝐔−𝟏) = ±1 dan 1
det (𝐔)∈ ℤ. (5)
Dari (4) dan (5) dapat disimpulkan bahwa matriks 𝐔−𝟏 merupakan matriks
unimodular. Bukti lengkap. ∎
Proposisi 4.2
Misalkan 𝒜 = {𝐚1, 𝐚2, … , 𝐚𝑛} adalah basis untuk ℒ(𝒜) dan ℬ ={𝐛1, 𝐛2, … , 𝐛𝑛} adalah basis untuk ℒ(ℬ). Maka 𝒜 ~ ℬ jika dan hanya jika adalah
matriks unimodular 𝐔 ∈ ℤ𝑛×𝑛 sehingga 𝐁 = 𝐀𝐔, dimana 𝐀 dan 𝐁 adalah bentuk
matriks
𝐀 = (𝐚1 𝐚2 … 𝐚𝑛) dan 𝐁 = (𝐛1 𝐛2 … 𝐛𝑛). Bukti:
(⇒)Misalkan ℒ(𝒜) = ℒ(ℬ) . Dari asumsi ini, berarti untuk setiap 𝑗 =1, 2, … 𝑛 untuk 𝐛𝑗 ∈ ℒ(𝒜). Dari pengertian ℒ(𝒜) maka ada 𝐮𝑗 =(𝑢1𝑗 𝑢1𝑗 … 𝑢1𝑗) ∈ ℤ𝑛 sehingga
𝐛𝑗 =∑𝑢𝑖𝑗𝐚𝑗 . (6)
𝑛
𝑖=1
12
Dengan demikian, dapat didefinisikan matriks 𝐔 ∈ ℤ𝑛×𝑛 yang kolom-kolomnya
adalah vektor 𝐮𝑗, yaitu
𝐔 = (𝐮1 𝐮2 … 𝐮𝑛) = (
𝑢11 𝑢12 … 𝑢1𝑛𝑢21⋮𝑢𝑛1
𝑢22⋮𝑢𝑛2
… 𝑢2𝑛⋱ ⋮
… 𝑢𝑛𝑛
).
Dari persamaan (6) diperoleh persamaan matriks
(𝐛1 𝐛2 … 𝐛𝑛) = (𝐚1 𝐚2 … 𝐚𝑛)(𝐮1 𝐮2 … 𝐮𝑛) ⇔ 𝐁 = 𝐀𝐔. (7) Dengan langkah yang sama, dapat diperoleh matriks 𝐕 ∈ ℤ𝑛×𝑛 sehingga
𝐀 = 𝐁𝐕. (8) Dari persamaan (7) dan (8),
𝐀 = 𝐁𝐕 = 𝐀𝐔𝐕 ⇒ det(𝐀) = det(𝐀𝐔𝐕) ⇔ det(𝐔)det(𝐕) = 1. Disamping itu, karena 𝐔 dan 𝐕 adalah matriks bilangan bulat, maka
determinannya juga bilangan bulat. Dengan demikian, dapat disimpulkan bahwa
det(𝐔) = ±1.
(⇐) Misalkan 𝐁 = 𝐀𝐔 dengan U unimodular. Dari asumsi ini, berarti untuk
setiap 𝑗 = 1, 2, … , 𝑛 , 𝐛𝑗 ∈ ℒ(𝒜) , dengan kata lain, 𝐛𝑗 merupakan kombinasi
linier bilangan bulat dari 𝒜. Selanjutnya bahwa karena setiap 𝐱 ∈ ℒ(ℬ) merupakan kombinasi linier dari {𝐛1 𝐛2 … 𝐛𝑛} , maka dapat disimpulkan
bahwa x juga merupakan kombinasi linier bilangan bulat dari 𝒜 (artinya 𝐱 ∈ℒ(𝒜)). Dengan demikian, diperoleh ℒ(ℬ) ⊆ ℒ(𝒜). Sekarang tinggal ditunjukkan
ℒ(𝒜) ⊆ ℒ(ℬ). Perhatikan bahwa, dari asumsi juga diperoleh 𝐀 = 𝐁𝐔−1 dengan
𝐔−1 adalah unimodular (Proposisi 4.1). Akhirnya dengan langkah yang sama
dengan sebelumnya diperoleh ℒ(𝒜) ⊆ ℒ(ℬ). Bukti lengkap. ∎
Cara yang lebih praktis untuk menentukan dua basis yang ekivalen adalah
dengan menerapkan operasi kolom integer (integer column operation).
Definisi 4.4
Operasi Kolom Integer (OKI) pada matriks 𝐁 memiliki 3 jenis berikut:
1. 𝐾𝑗𝑘(𝐁) menyatakan matriks hasil operasi yang menukar kolom ke-j dan
kolom ke-k pada matriks 𝐁.
2. 𝐾𝑗(−1)(𝐁) menyatakan matriks hasil operasi yang mengalikan kolom ke-j
dengan skalar -1 pada matriks 𝐁.
3. 𝐾𝑗𝑘(𝜆)(𝐁) menyatakan matriks hasil operasi yang menambahkan kolom ke-j
dengan 𝜆 ∈ ℤ kali kolom ke-k pada matriks 𝐁.
OKI hampir sama dengan Operasi Kolom Dasar (OKD) yang biasanya
diterapkan pada ruang vektor. Hal yang membedakan hanya terdapat pada jenis
kedua. Pada OKD, pengali yang digunakan adalah sembarang bilangan real taknol
sedangkan pada OKI pengali yang digunakan adalah -1.
Kemudian, misalkan I adalah matriks identitas dan K adalah serangkaian
OKI yang diterapkan pada suatu matriks B dan menghasilkan matriks C, maka
berlaku
𝐾(𝐁) = 𝐂 ⇔ 𝐁.𝐾(𝐈) = 𝐂.
Serangkaian OKI yang diterapkan pada I pasti akan menghasilkan matriks
bilangan bulat, sehingga 𝐾(𝐈) merupakan matriks bilangan bulat. Disamping itu,
13
Gambar 5 Parallelepiped dengan ℬ = {(2,3), (3,2)}
karena det(𝐈) = 1, OKI jenis pertama dan kedua bersifat mengubah tanda
determinan, dan OKI jenis ketiga bersifat tidak mengubah nilai determinan,
sehingga didapatkan det(𝐾(𝐈)) = ±1. Dengan demikian dapat disimpulkan
bahwa 𝐾(𝐈) merupakan matriks unimodular, sehingga didapatkan proposisi
berikut.
Proposisi 4.3
Dua basis dikatakan ekivalen jika dan hanya jika yang satu merupakan hasil
serangkaian OKI dari yang lain.
Fungsi Proyeksi dan Determinan Latis
Definisi 4.5
Untuk 𝑗 = 1, 2, … , 𝑛 fungsi proyeksi 𝜋𝑗 dari ruang vektor 𝑉 = ⟨ℬ∗⟩ = ⟨ℬ⟩
ke subruang vektor ⟨{𝐛𝑗∗, 𝐛𝑗+1
∗ , … , 𝐛𝑛∗ }⟩ didefinisikan sebagai
𝜋𝑗(𝐯) =∑(𝐯. 𝐛𝑖
∗
𝐛𝑖∗. 𝐛𝑖
∗)
𝑛
𝑖=𝑗
𝐛𝑖∗.
Jika diambil nilai 𝐯 = 𝐛𝑘, 𝑘 = 1, 2, … , 𝑛 maka diperoleh
𝜋𝑗(𝐛𝑘) =∑(𝐯. 𝐛𝑖
∗
𝐛𝑖∗. 𝐛𝑖
∗)𝐛𝑖∗
𝑛
𝑖=𝑗
=
{
𝟎 jika 𝑘 < 𝑗
𝐛𝑘∗ jika 𝑘 = 𝑗
𝐛𝑘∗ +∑𝜇𝑘𝑖𝐛𝑖
∗
𝑘−1
𝑖=𝑗
jika 𝑘 > 𝑗.
Selanjutnya perhatikan definisi berikut.
Definisi 4.6
Misalkan Λ = ℒ(ℬ) adalah latis yang dibangkitkan oleh basis ℬ ={𝐛1, 𝐛2, … , 𝐛𝑛}, maka dapat didefinisikan himpunan
𝒫(ℬ) = {∑𝑥𝑗𝐛𝑗
𝑛
𝑗=1
/𝑥𝑗 ∈ ℝ, 0 ≤ 𝑥𝑗 < 1},
dimana 𝒫(ℬ) merupakan bangun geometrik yang disebut parallelepiped dasar
atau daerah fundamental (fundamental region). Berikut ilustrasi dari 𝒫(ℬ).
14
Dari Gambar 5 terlihat bahwa pada latis dalam ℝ2, 𝒫(ℬ) digambarkan sebagai
daerah arsir jajaran genjang. Hasil dari luas jajaran genjang pada Gambar 5
disebut 𝐯𝐨𝐥(𝒫(ℬ)). Pada sembarang latis Λ, dapat didefinisikan nilai mutlak dari
determinan latis dari Λ, dinotasikan dengan |det(Λ)|, yang merupakan nilai dari
𝐯𝐨𝐥(𝒫(ℬ)). Dari ilustrasi Gambar 5, maka definisi tersebut dapat dinyatakan
sebagai berikut.
Definisi 4.7
Misalkan Λ = ℒ(ℬ) adalah latis yang dibangkitkan oleh basis ℬ ={𝐛1, 𝐛2, … , 𝐛𝑛} dan ℬ∗ = {𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ } adalah hasil ortogonalisasi Gram-
Schmidt dari ℬ. Determinan dari Λ didefinisikan sebagai
det(Λ) =∏‖𝐛𝑖∗‖
𝑛
𝑖=1
.
Cara menentukan determinan suatu latis tanpa menggunakan ortogonalisasi
Gram-Schmidt akan dijelaskan oleh proposisi setelah lema berikut ini.
Lema 4.1
Jika matriks
𝐁∗ = (𝐛1∗ 𝐛2
∗ … 𝐛𝑛∗ )
adalah matriks hasil ortogonalisasi Gram-Schmidt dari matriks
𝐁 = (𝐛1 𝐛2 … 𝐛𝑛), maka ada matriks U dengan unsur diagonal adalah 1 sehingga 𝐁 = 𝐁∗𝐔.
Bukti:
Perhatikan bahwa rumus ortogonalisasi Gram-Schmidt dapat diubah
menjadi
𝐛1 = 𝐛1∗
𝐛2 = 𝐛2∗ + 𝜇21𝐛1
∗
𝐛3 = 𝐛3∗ + (𝜇31𝐛1
∗ + 𝜇32𝐛2∗)
⋮
𝐛𝑛 = 𝐛𝑛∗ +∑𝜇𝑛,𝑖
𝑛−1
𝑖=1
𝐛𝑖∗.
Hal ini menunjukkan bahwa transformasi balik dari ortogonalisasi Gram-Schmidt
dari 𝐁∗ ke 𝐁 merupakan serangkaian OKD yang dilakukan pada matriks B, yaitu
𝐁 = 𝐾(𝐁∗) ⇔ 𝐁 = 𝐁∗𝐾(𝐈). Dengan demikian dapat didefinisikan suatu matriks 𝐔 = 𝐾(𝐈), dimana
𝐾(𝐈) = (
1 𝜇21 … 𝜇𝑛10⋮0
1⋮0
…⋱1
𝜇𝑛2⋮1
).
Bukti lengkap. ∎
Proposisi 4.4
Jika Λ = ℒ(ℬ) adalah latis yang dibangkitkan oleh basis ℬ ={𝐛1, 𝐛2, … , 𝐛𝑛}, maka
det(Λ) = √det (𝐁𝑇𝐁), dimana B adalah bentuk matriks dari ℬ.
15
Bukti:
Misalkan 𝐁∗ = (𝐛1
∗ 𝐛2∗ … 𝐛𝑛
∗ ) adalah matriks ortogonalisasi dari matriks
𝐁 = (𝐛1 𝐛2 … 𝐛𝑛). Menurut Lema 4.1, terdapat sebuah matriks U yang unsur diagonalnya adalah 1
sehingga
𝐁 = 𝐁∗𝐔. Dengan demikian diperoleh
𝐁𝑇𝐁 = (𝐁∗𝐔)𝑇(𝐁∗𝐔) ⇔ 𝐁𝑇𝐁 = 𝐔𝑇((𝐁∗)𝑇𝐁∗)𝐔
⇒ det (𝐁𝑇𝐁) = det(𝐔𝑇((𝐁∗)𝑇𝐁∗)𝐔) ⇔ det (𝐁𝑇𝐁) = det((𝐁∗)𝑇𝐁∗)
⇔ det (𝐁𝑇𝐁) = (∏‖𝐛𝑖∗‖
𝑛
𝑖=1
)
2
⇔∏‖𝐛𝑖∗‖
𝑛
𝑖=1
= √det (𝐁𝑇𝐁)
⇔ det(Λ) = √det (𝐁𝑇𝐁). Bukti lengkap. ∎
Berikut ini merupakan proposisi yang menjelaskan bahwa determinan suatu
latis tidak bergantung pada suatu basis.
Proposisi 4.5
Jika 𝒜 ~ ℬ, maka det (ℒ(𝒜)) = det(ℒ(ℬ)). Bukti:
Misalkan 𝒜 ~ ℬ dengan A dan B adalah bentuk matriks dari 𝒜 dan ℬ .
Berdasarkan Proposisi 4.2 terdapat sebuah matriks unimodular U sehingga 𝐀 =𝐁𝐔. Dengan demikian,
det (ℒ(𝒜)) = √det (𝐀𝑇𝐀)
= √det ((𝐁𝐔)𝑇(𝐁𝐔))
= √det (𝐔𝑇(𝐁𝑇𝐁)𝐔)
= √det (𝐁𝑇𝐁)
= det(ℒ(ℬ)). Bukti lengkap. ∎
Permasalahan dalam Latis
Berikut merupakan pengertian jarak minimum dan panjang vektor minimum
dari suatu latis.
16
Definisi 4.8
Jarak minimum antara sebarang dua titik di dalam latis Λ , dinotasikan
dengan 𝜆(Λ), didefinisikan sebagai
𝜆(Λ) = inf(‖𝐱 − 𝐲‖ ∕ 𝐱, 𝐲 ∈ 𝚲, 𝐱 ≠ 𝐲 ).
Definisi 4.9
Panjang vektor minimum di antara titik-titik di dalam latis Λ, dinotasikan
dengan 𝜋(Λ), didefinisikan sebagai
𝜋(Λ) = inf(‖𝐱‖ ∕ 𝐱 ∈ 𝚲, 𝐱 ≠ 𝟎 ).
Dua pengertian diatas memiliki arti yang ekivalen. Hal tersebut dinyatakan
dalam proposisi berikut.
Proposisi 4.5
Untuk sembarang latis Λ, berlaku 𝜆(Λ) = 𝜋(Λ). Bukti:
Karena Λ adalah grup, maka berlaku
𝜆(Λ) = inf(‖𝐱 − 𝐲‖ 𝐱⁄ , 𝐲 ∈ 𝚲, 𝐱 ≠ 𝐲 ) = inf(‖𝐳‖/𝐳 = 𝐱 − 𝐲 ∈ 𝚲, 𝐱 ≠ 𝐲)
= inf(‖𝐳‖/𝐳 ∈ 𝚲, 𝐳 ≠ 𝟎) = 𝜋(Λ). Bukti lengkap. ∎
Berikut ini merupakan batas bawah dari 𝜆.
Teorema 4.1
Jika Jika Λ = ℒ(ℬ) adalah latis yang dibangkitkan oleh basis ℬ ={𝐛1, 𝐛2, … , 𝐛𝑛} dan ℬ∗ = {𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ } adalah hasil ortogonalisasi dari ℬ maka
min𝑗∈𝐼𝑛
‖𝐛𝑗∗‖ ≤ 𝜆(Λ), 𝐼𝑛 = {1,2, … , 𝑛}.
Bukti:
Ambil sembarang 𝐯 ∈ ℒ(ℬ) dengan 𝐯 ≠ 𝟎, maka ada vektor 𝐱 ∈ ℤ𝑛 dengan
𝐱 ≠ 𝟎 sehingga 𝐯 = 𝐁𝐱 dengan B adalah matriks bilangan bulat dari ℬ. Misalkan
𝐱 = {𝑥1, 𝑥2, … , 𝑥𝑛} dan 𝑘 adalah indeks terbesar dari komponen x sehingga 𝑥𝑘 ≠0, karena untuk setiap 𝑗 < 𝑘, 𝐛𝑘
∗ ortogonal ke 𝐛𝑗 dan juga ortogonal ke 𝐛𝑗∗, maka
𝐯. 𝐛𝑘∗ = (𝐁𝐱). 𝐛𝑘
∗
= (∑𝑥𝑗𝐛𝑗
𝑘
𝑗=1
) . 𝐛𝑘∗
= 𝑥𝑘(𝐛𝑘. 𝐛𝑘∗ )
dan
𝐛𝑘∗ . 𝐛𝑘
∗ = (𝐛𝑘 −∑𝜇𝑘𝑗𝐛𝑗
𝑘−1
𝑗=1
) . 𝐛𝑘∗
= 𝐛𝑘. 𝐛𝑘∗ .
Dengan demikian diperoleh
𝐯. 𝐛𝑘∗ = 𝑥𝑘(𝐛𝑘
∗ . 𝐛𝑘∗ )
17
= 𝑥𝑘‖𝐛𝑘∗‖2.
Berdasarkan ketaksamaan Cauchy-Schwartz, maka diperoleh
|𝐯. 𝐛𝑘∗ | ≤ ‖𝐯‖‖𝐛𝑘
∗‖
⇔ |𝑥𝑘|‖𝐛𝑘∗‖2 ≤ ‖𝐯‖‖𝐛𝑘
∗‖
⇔ |𝑥𝑘|‖𝐛𝑘∗‖2 ≤ ‖𝐯‖.
Karena |𝑥𝑘| ≥ 1, untuk 𝐼𝑛 = {1, 2, … , 𝑛} diperoleh
min𝑗∈𝐼𝑛
‖𝐛𝑗∗‖ ≤ 𝜆(Λ).
Bukti lengkap. ∎
Selanjutnya didefinisikan masalah yang paling mendasar dalam latis, yaitu
SVP (Shortest Vector Problem). Berikut merupakan varian dari SVP.
Problem 4.1 (Pelacakan SVP)
Diberikan sebuah latis dengan basis ℬ , bagaimana menentukan 𝐱 ∈ ℒ(ℬ)
sehingga ‖𝐱‖ = 𝜆(ℒ(ℬ)).
Problem 4.2 (Optimisasi SVP)
Diberikan sebuah latis dengan basis ℬ, bagaimana menentukan 𝜆(ℒ(ℬ)).
Problem 4.3 (Pelacakan SVP)
Diberikan sebuah latis dengan basis ℬ dan bilangan rasional 𝑞 ∈ ℚ ,
bagaimana menentukan apakah 𝜆(ℒ(ℬ)) ≤ 𝑞 atau 𝜆(ℒ(ℬ)) > 𝑞.
Problem 4.4 (Pelacakan SVP)
Diberikan sebuah latis dengan basis ℬ dan 𝛾 ≥ 1, bagaimana menentukan
𝐱 ∈ ℒ(ℬ) dengan 𝐱 ≠ 𝟎 sehingga ‖𝐱‖ ≤ 𝛾𝜆(ℒ(ℬ)).
Problem 4.5 (Pelacakan SVP)
Diberikan sebuah latis dengan basis ℬ dan 𝛾 ≥ 1, bagaimana menentukan 𝑑
sehingga 𝑑 ≤ 𝜆(ℒ(ℬ)) ≤ 𝛾𝑑.
Algoritme LLL
Pengertian Basis Tereduksi
Berikut ini merupakan definisi dari basis tereduksi 𝛿.
Definisi 4.10
Suatu basis ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dalam ℝ𝑚 disebut tereduksi LLL dengan
parameter 𝛿 jika memenuhi
1. |𝜇𝑗𝑖| ≤1
2, untuk setiap bilangan bulat 𝑖, 𝑗 dengan 1 ≤ 𝑖 < 𝑗 < 𝑛,
2. 𝛿‖𝜋𝑗(𝐛𝑗)‖2≤ ‖𝜋𝑗(𝐛𝑗+1)‖
2, untuk 𝑗 = 1, 2, … , 𝑛 − 1,
dimana 𝛿 merupakan parameter reduksi yang bernilai real dengan 1
4< 𝛿 < 1.
Syarat pertama dalam definisi di atas disebut dengan reduksi ukuran. Syarat
pertama mengatakan bahwa basis tereduksi 𝛿 harus “hampir ortogonal” dan dalam
18
komputasinya syarat ini mudah dicapai dengan menggunakan ortogonalisasi
Gram-Schmidt. Pembahasan mengenai syarat ini akan dibahas pada subbab
berikutnya.
Sedangkan pada syarat kedua dari definisi di atas disebut syarat pertukaran,
atau disebut juga kondisi Lovasz, yang dapat ditulis ulang sebagai
𝛿‖𝐛𝑗∗‖2≤ ‖𝐛𝑗+1
∗ + 𝜇𝑗+1,𝑗𝐛𝑗∗‖2
⇔ 𝛿‖𝐛𝑗∗‖2≤ ‖𝐛𝑗+1
∗ + 𝜇𝑗+1,𝑗𝐛𝑗∗‖ ‖𝐛𝑗+1
∗ + 𝜇𝑗+1,𝑗𝐛𝑗∗‖
⇔ 𝛿‖𝐛𝑗∗‖2≤ ‖𝐛𝑗+1
∗ ‖ 2+ 2𝜇𝑗+1,𝑗‖𝐛𝑗
∗. 𝐛𝑗+1∗ ‖+‖𝜇𝑗+1,𝑗𝐛𝑗
∗‖2
⇔ 𝛿‖𝐛𝑗∗‖2≤ ‖𝐛𝑗+1
∗ ‖ 2+𝜇𝑗+1,𝑗‖𝐛𝑗
∗‖2
⇔ (𝛿 − 𝜇𝑗+1,𝑗2 )‖𝐛𝑗
∗‖2≤ ‖𝐛𝑗+1
∗ ‖2.
Ketaksamaan diatas menyatakan bahwa vektor-vektor Gram-Schmidt dari
basis tereduksi LLL harus terurut turun dengan faktor penurunan sebesar 𝛿 −
𝜇𝑗+1,𝑗2 . Jika terdapat pasangan vektor (𝐛𝑗
∗, 𝐛𝑗+1∗ ) yang tidak memenuhi kondisi
Lovasz, maka dapat dilakukan pertukaran antara vektor tersebut kemudian proses
ortogonalisasi kembali dilakukan.
Selanjutnya dengan menerapkan syarat-syarat yang terdapat pada Definisi
4.10, maka diperoleh batas atas untuk ‖𝐛1‖ dari basis tereduksi 𝛿.
Teorema 4.2
Jika ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dalam ℝ𝑚 adalah basis tereduksi 𝛿, maka berlaku
‖𝐛1‖ ≤ 𝛼𝑛−1
2 𝜆(Λ) dengan 𝛼 =1
𝛿−1
4
.
Bukti:
Misalkan ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dalam ℝ𝑚 adalah basis tereduksi 𝛿, menurut
definisi diperoleh
𝛿‖𝐛𝑗∗‖2≤ ‖𝐛𝑗+1
∗ + 𝜇𝑗+1,𝑗𝐛𝑗∗‖2
⇔ (𝛿 − 𝜇𝑗+1,𝑗2 )‖𝐛𝑗
∗‖2≤ ‖𝐛𝑗+1
∗ ‖2
⇔ (𝛿 −1
4) ‖𝐛𝑗
∗‖2≤ ‖𝐛𝑗+1
∗ ‖2
⇔1
𝛼‖𝐛𝑗
∗‖2≤ ‖𝐛𝑗+1
∗ ‖2
⇔ ‖𝐛𝑗∗‖2≤ 𝛼‖𝐛𝑗+1
∗ ‖2 . (9)
Dengan menerapkan pertidaksamaan (9) secara berulang diperoleh
‖𝐛1∗‖2 ≤ 𝛼‖𝐛2
∗‖2 ‖𝐛2
∗‖2 ≤ 𝛼‖𝐛3∗‖2
‖𝐛3∗‖2 ≤ 𝛼‖𝐛4
∗‖2
⋮ ‖𝐛1
∗‖2 ≤ 𝛼‖𝐛2∗‖2 ≤ 𝛼2‖𝐛3
∗‖2 ≤ ⋯ ≤ 𝛼𝑛−1‖𝐛𝑛∗ ‖2.
Dengan kata lain, secara umum untuk setiap 𝑗 ∈ 𝐼𝑛 = {1,2, … , 𝑛}, maka
‖𝐛1∗‖2 ≤ 𝛼𝑗−1‖𝐛𝑗
∗‖2⇒ ‖𝐛1
∗‖ ≤ 𝛼𝑗−1
2 ‖𝐛𝑗∗‖ ⇔ ‖𝐛1
∗‖ ≤ 𝛼𝑗−1
2 ‖𝐛𝑗∗‖.
Karena berlaku untuk setiap 𝑗 ∈ 𝐼𝑛, maka
‖𝐛1∗‖ ≤ (𝛼
𝑗−1
2 ) (min𝑗∈𝐼𝑛
‖𝐛𝑗∗‖). (10)
19
Misalkan ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dalam ℝ𝑚 adalah basis tereduksi LLL untuk latis
Λ = ℒ(ℬ), menurut Teorema 4.1 diperoleh
min𝑗∈𝐼𝑛
‖𝐛𝑗∗‖ ≤ 𝜆(Λ)
dan ketaksamaan persamaan (10) menjadi
‖𝐛1∗‖ ≤ (𝛼
𝑗−1
2 ) 𝜆(Λ).
Bukti lengkap. ∎
Teorema 4.2 menyatakan bahwa vektor pertama pada basis tereduksi 𝛿
merupakan jawaban dari Problem 4.4 dengan nilai 𝛾 = 𝛼𝑗−1
2 .
Reduksi Ukuran
Sebagaimana telah dinyatakan dalam subbab sebelumnya bahwa syarat
reduksi ukuran yaitu |𝜇𝑗,𝑖| ≤1
2 mudah dicapai dengan menggunakan prosedur
Gram-Schmidt. Pada subbab ini akan dibahas melalui interpretasi geometrik.
Untuk itu perlu pengertian tentang daerah fundamental (parallelepiped) yang lain
dari 𝒫(ℬ), yaitu daerah fundamental dasar terpusat yang didefinisikan sebagai
berikut.
Definisi 4.11
Misalkan Λ = ℒ(ℬ) adalah latis yang dibangkitkan oleh basis ℬ =[𝐛1, 𝐛2, … , 𝐛𝑛] dalam ruang vektor ℝ𝑚 . Daerah fundamental terpusat (centered
fundamental region) dari Λ , dinotasikan dengan 𝒞(ℬ) , didefinisikan sebagai
himpunan
𝒞(ℬ) = {∑𝑥𝑗𝐛𝑗
𝑛
𝑗=1
/𝑥𝑗 ∈ ℝ,−1
2≤ 𝑥𝑗 <
1
2}.
𝒞(ℬ) juga disebut parallelepiped dasar terpusat (centered fundamental region).
Proposisi 4.6
Jika Λ = ℒ(ℬ) adalah latis yang dibangkitkan oleh basis ℬ =[𝐛1, 𝐛2, … , 𝐛𝑛] dalam ruang vektor ℝ𝑚 , maka untuk setiap vektor 𝐰 ∈ ⟨ℬ⟩, ada
tepat satu vektor 𝐭 ∈ 𝒞(ℬ) sehingga dapat dituliskan 𝐰 = 𝐯 + 𝐭. Bukti:
Karena ℬ merupakan basis untuk Λ, maka ℬ juga merupakan basis untuk
ruang vektor ⟨ℬ⟩, dan karena 𝐰 ∈ ⟨ℬ⟩, berarti ada tepat satu (𝑤1, 𝑤2, … , 𝑤𝑛) ∈ℝ𝑛 sehingga
𝐰 =∑𝑤𝑗𝐛𝑗
𝑛
𝑗=1
.
Kemudian, karena 𝑤𝑗 ∈ ℝ maka ada bilangan bulat ⌊𝑤𝑗⌉ ∈ ℤ (pembulatan ke
bilangan bulat terdekat (round) dari 𝑤𝑗 sehingga
𝑤𝑗 = ⌊𝑤𝑗⌉ + 𝑡𝑗 dengan −1
2≤ 𝑡𝑗 <
1
2.
Selanjutnya,
20
𝐰 =∑𝑤𝑗𝐛𝑗
𝑛
𝑗=1
= ∑(⌊𝑤𝑗⌉ + 𝑡𝑗)𝐛𝑗
𝑛
𝑗=1
= ∑⌊𝑤𝑗⌉𝐛𝑗 +∑𝑡𝑗𝐛𝑗
𝑛
𝑗=1
𝑛
𝑗=1
= 𝐯 + 𝐭. Bukti lengkap. ∎
Lema 4.2
Misalkan ℬ∗ = [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] adalah hasil proses ortogonalisasi Gram-
Schmidt dari himpunan bebas linier ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dan diberikan sebarang
𝐰 ∈ ⟨ℬ⟩. Jika 𝐰 = ∑ 𝑤𝑗𝐛𝑗𝑛𝑗=1 , maka
𝑤𝑛 =𝐰. 𝐛𝑛
∗
𝐛𝑛∗ . 𝐛𝑛∗.
Bukti:
Perhatikan bahwa
𝐰.𝐛𝑛∗ = (∑𝑤𝑗𝐛𝑗
𝑛
𝑗=1
) . 𝐛𝑛∗ =∑𝑤𝑗
𝑛
𝑗=1
(𝐛𝑗 . 𝐛𝑛∗ ) = 𝑤𝑛(𝐛𝑛. 𝐛𝑛
∗ ) ⇔ 𝑤𝑛 =𝐰. 𝐛𝑛
∗
𝐛𝑛∗ . 𝐛𝑛∗.
Bukti selesai setelah ditunjukkan bahwa 𝐛𝑛. 𝐛𝑛∗ = 𝐛𝑛
∗ . 𝐛𝑛∗ sebagai berikut
𝐛𝑛. 𝐛𝑛∗ = (𝐛𝑛
∗ +∑𝜇𝑛,𝑖𝐛𝑖∗
𝑛−1
𝑖=1
) . 𝐛𝑛∗
= 𝐛𝑛∗ . 𝐛𝑛
∗ +∑𝜇𝑛,𝑖
𝑛−1
𝑖=1
(𝐛𝑖∗. 𝐛𝑛
∗ )
= 𝐛𝑛∗ . 𝐛𝑛
∗ +∑𝜇𝑛,𝑖
𝑛−1
𝑖=1
(0)
= 𝐛𝑛∗ . 𝐛𝑛
∗ . Bukti lengkap. ∎
Proposisi 4.7
Jika ℬ∗ = [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] adalah hasil proses ortogonalisasi Gram-Schmidt
dari himpunan bebas linier ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] , maka 𝒞(ℬ∗) juga merupakan
daerah fundamental untuk ℒ(ℬ). Artinya, untuk setiap 𝐰 ∈ ⟨ℬ⟩, ada tepat satu
vektor latis 𝐰 ∈ ℒ(ℬ) dan ada tepat satu vektor 𝐭 ∈ 𝒞(ℬ∗) sehingga dapat
dituliskan 𝐰 = 𝐯 + 𝐭. Bukti:
Demi kepentingan bagaimana menentukan 𝐯 dan 𝐭 secara algoritmik,
proposisi ini akan dibuktikan secara instruktif. Kemudian, agar lebih mudah
dibayangkan, tanpa mengurangi keumumannya, diambil untuk kasus 𝑛 = 3
sebagai berikut.
21
1. Definisikan 𝐰3 = 𝐰 , karena 𝐰3 ∈ ⟨{𝐛1, 𝐛2, 𝐛3}⟩ , berarti ada tepat satu
(𝑥1, 𝑥2, 𝑥3) ∈ ℝ3 sehingga
𝐰3 =∑𝑥𝑗𝐛𝑗
3
𝑗=1
dan berdasarkan Lema 4.2 dapat dituliskan
𝐰3 =∑𝑥𝑗𝐛𝑗 +
2
𝑗=1
𝐰𝟑. 𝐛3∗
𝐛3∗ . 𝐛3
∗ 𝐛3
= ∑𝑥𝑗𝐛𝑗 +
2
𝑗=1
(⌊𝐰3. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ + 𝑡3)𝐛3
dan dalam hal ini, −1
2≤ 𝑡3 <
1
2. Selanjutnya,
𝐰3 =∑𝑥𝑗𝐛𝑗 +
2
𝑗=1
⌊𝐰3. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3 + 𝑡3𝐛3
=∑𝑥𝑗𝐛𝑗 +
2
𝑗=1
⌊𝐰𝟑. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3 + 𝑡3 (𝐛3∗ +∑𝜇3,𝑖
2
𝑖=1
𝐛𝑖∗) ⇔
𝐰3 − (⌊𝐰𝟑. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3 + 𝑡3𝐛3) =∑𝑥𝑗𝐛𝑗 +∑𝑡3𝜇3,𝑖
2
𝑖=1
𝐛𝑖∗.
2
𝑗=1
(11)
2. Definisikan
𝐰2 = 𝐰3 − (⌊𝐰𝟑. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3 + 𝑡3𝐛3∗).
Dari persamaan (11) dan karena ⟨{𝐛1, 𝐛2}⟩ = ⟨{𝐛1∗ , 𝐛2
∗}⟩, maka
𝐰2 ∈ ⟨{𝐛1, 𝐛2}⟩ dengan tepat satu (𝑥1, 𝑥2) ∈ ℝ
2 sehingga
𝐰2 = 𝑥1𝐛1 + 𝑥2𝐛2 dan berdasarkan Lema 4.2, dapat dituliskan
𝐰2 = 𝑥1𝐛1 +𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ 𝐛2
= 𝑥1𝐛1 + (⌊𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ ⌉ + 𝑡2)𝐛2
dan dalam hal ini, −1
2≤ 𝑡2 <
1
2. Selanjutnya,
𝐰2 = 𝑥1𝐛1 + ⌊𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ ⌉ 𝐛2 + 𝑡2𝐛2
= 𝑥1𝐛1 + ⌊𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ ⌉ 𝐛2 + 𝑡2(𝐛2∗ + 𝜇2,1𝐛1
∗) ⇔
𝐰2 − (⌊𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ ⌉ 𝐛2 + 𝑡2𝐛2∗) = 𝑥1𝐛1 + 𝑡2𝜇2,1𝐛1
∗ . (12)
3. Definisikan
22
𝐰1 = 𝐰2 − (⌊𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ ⌉ 𝐛2 + 𝑡2𝐛2∗).
Dari persamaan (12), maka 𝐰1 ∈ ⟨{𝐛1}⟩ dan ada 𝑥1 ∈ ℝ sehingga
𝐰1 = 𝑥1𝐛1.
Berdasaran Lema 4.2 dapat dituliskan
𝐰1 = ⌊𝐰𝟏. 𝐛1
∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1 = (⌊𝐰𝟏. 𝐛1
∗
𝐛1∗ . 𝐛1
∗ ⌉ + 𝑡1𝐛1∗)
dan dalam hal ini, −1
2≤ 𝑡1 <
1
2.
Maka
𝐰 = 𝐯 + 𝐭 dimana
𝐯 = ⌊𝐰𝟏. 𝐛1
∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1 + ⌊𝐰𝟐. 𝐛2
∗
𝐛2∗ . 𝐛2
∗ ⌉ 𝐛2 + ⌊𝐰𝟑. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3
dan
𝐭 = 𝑡1𝐛1∗ + 𝑡2𝐛2
∗ + 𝑡3𝐛3∗ .
Dengan mudah dilihat bahwa 𝐯 ∈ ℒ(ℬ) dan 𝐭 ∈ 𝒞(ℬ∗). Bukti lengkap. ∎
Bukti dari proposisi sekaligus merupakan bukti kebenaran dari algoritme
berikut.
Algoritme 4.1
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ) dan 𝐰 ∈ ⟨ℬ⟩. Output: Vektor latis 𝐯 ∈ ℒ(ℬ) dan 𝐭 ∈ 𝒞(ℬ∗).
1. Dengan algoritme Gram-Schmidt, hitung [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] dengan
menggunakan input ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛]. 2. Inisialisasi 𝐯 ≔ 𝟎 dan 𝐭 ≔ 𝟎.
3. Untuk 𝑖 = 𝑛, 𝑛 − 1,… ,1 hitung:
a) 𝑥𝑖 ≔𝐰 .𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
b) 𝑣𝑖 ≔ ⌊𝑥𝑖⌉ c) 𝐯 ≔ 𝐯 + 𝑣𝑖𝐛𝑖 d) 𝑡𝑖 ≔ 𝑥𝑖 − 𝑣𝑖 e) 𝐭 ≔ 𝒕 + 𝑡𝑖𝐛𝑖
∗
f) 𝑤 ≔ 𝑤 − (𝑣𝑖𝐛𝑖 + 𝑡𝑖𝐛𝑖∗)
4. return(𝐯 dan t).
Algoritme 4.2 (Menentukan Vektor Terdekat)
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ) dan 𝐰 ∈ ⟨ℬ⟩. Output: Vektor latis 𝐯 ∈ ℒ(ℬ).
1. Dengan algoritme Gram-Schmidt, hitung [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] dengan
menggunakan input ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛]. 2. Inisialisasi 𝐯 ≔ 𝟎.
3. Untuk 𝑖 = 𝑛, 𝑛 − 1,… ,1 hitung:
a) 𝑥𝑖 ≔𝐰 .𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
b) 𝑣𝑖 ≔ ⌊𝑥𝑖⌉ c) 𝐯 ≔ 𝐯 + 𝑣𝑖𝐛𝑖
23
d) 𝑡𝑖 ≔ 𝑥𝑖 − 𝑣𝑖 e) 𝑤 ≔ 𝑤 − (𝑣𝑖𝐛𝑖 + 𝑡𝑖𝐛𝑖
∗) 4. return(𝐯).
Akibat dari Proposisi 4.7 diberikan dalam teorema berikut ini.
Teorema 4.3
Jika ℬ∗ = [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] adalah hasil proses ortogonalisasi Gram-Schmidt
dari himpunan bebas linier ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] , maka ℬ dapat ditransformasikan
menjadi ℬ′ = [𝐛1′ , 𝐛2
′ , … , 𝐛𝑛′ ] yang juga merupakan basis untuk ℒ(ℬ) dan ℬ∗ juga
merupakan hasil ortogonalisasi Gram-Schmidt ℬ′. Dalam hal ini,
𝐛1∗ = 𝐛1
′
𝐛𝑗∗ = 𝐛𝑗
′ −∑𝜇𝑗,𝑖′
𝑗−1
𝑖=1
𝐛𝑖∗,
untuk 𝑗 = 2, 3, … , 𝑟 dengan 𝜇𝑗,𝑖′ =
𝐛𝑗′ .𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗ dan |𝜇𝑗,𝑖′ | ≤
1
2.
Bukti:
Untuk memudahkan pemahaman, transformasi dari ℬ ke ℬ′ dilakukan
secara instruktif sebagai berikut
1. Definisikan
𝐛1′ = 𝐛1.
Dalam hal ini, didapatkan subruang vektor berdimensi satu, yaitu
𝒮1 = ⟨{𝐛1}⟩ = ⟨{𝐛1′ }⟩ = ⟨{𝐛1
∗}⟩. 2. Dari proses ortogonalisasi dari 𝐛2 ke 𝐛2
∗ berlaku hubungan
𝐛2∗ = 𝐛2 − 𝐩1
dengan 𝐩1 = 𝜇2,1𝐛1∗ =
𝐛2.𝐛1∗
𝐛1∗ .𝐛1
∗ 𝐛1∗ adalah vektor proyeksi dari 𝐛2 pada 𝒮1. Hal
ini berarti 𝐩1 ∈ 𝒮1. Dengan demikian, berdasarkan Proposisi 4.7 bahwa ada
vektor latis 𝐯1 ∈ ℒ⟨{𝐛1}⟩ dan vektor 𝐭1 ∈ 𝒞({𝐛1∗}), sehingga
𝐩1 = 𝐯1 + 𝐭1 dan akibatnya diperoleh
𝐛2∗ = 𝐛2 − (𝐯1 + 𝐭1) = (𝐛2 − 𝐯1) − 𝐭1.
Kemudian dari persamaan ini dapat didefinisikan
𝐛2′ = 𝐛2 − 𝐯1
sehingga jelas (karena latis adalah grup) bahwa 𝐛2′ ∈ ℒ(ℬ), dan diperoleh
persamaan
𝐛2∗ = 𝐛2
′ − 𝐭1.
Hasil ini menunjukkan bahwa ortogonalisasi {𝐛1′ , 𝐛2
′ } juga menghasilkan {𝐛1
∗ , 𝐛2∗} dengan vektor proyeksi 𝐛2
′ pada 𝒮1 adalah
𝐭1 = 𝜇2,1′ 𝐛1
∗ =𝐛2′ . 𝐛1
∗
𝐛1∗ . 𝐛1
∗ 𝐛1∗
dan dalam hali ini 𝜇2,1′ = 𝜇2,1 − ⌊𝜇2,1⌉ sehingga |𝜇2,1
′ | ≤1
2.
Selanjutnya untuk menghitung 𝐛2′ berarti cukup menghitung 𝐯1 dengan
menggunakan Algoritme 4.2 dan
𝐛3′ = 𝐛2 − 𝐯1.
24
Sebelum ke langkah berikutnya, dinotasikan dahulu subruang vektor
berdimensi dua yaitu
𝒮1 = ⟨{𝐛1, 𝐛2}⟩ = ⟨{𝐛1′ , 𝐛2
′ }⟩ = ⟨{𝐛1∗ , 𝐛2
∗}⟩. 3. Dari proses ortogonalisasi dari berlaku hubungan
𝐛3∗ = 𝐛3 − 𝐩2
dengan 𝐩2 = 𝜇3,1𝐛1∗ + 𝜇3,2𝐛2
∗ =𝐛3.𝐛1
∗
𝐛1∗ .𝐛1
∗ 𝐛1∗ +
𝐛3.𝐛2∗
𝐛2∗ .𝐛2
∗ 𝐛2∗ adalah vektor proyeksi
dari 𝐛3 pada 𝒮2 . Hal ini berarti 𝐩2 ∈ 𝒮2 . Dengan demikian, berdasarkan
Proposisi 4.7 bahwa ada vektor latis 𝐯2 ∈ ℒ⟨{𝐛1, 𝐛2}⟩ dan vektor 𝐭2 ∈𝒞({𝐛1
∗ , 𝐛2∗}) sehingga
𝐩2 = 𝐯2 + 𝐭2 dan akibatnya diperoleh
𝐛3∗ = 𝐛3 − (𝐯2 + 𝐭2) = (𝐛3 − 𝐯2) − 𝐭2.
Kemudian dari persamaan ini dapat didefinisikan
𝐛3′ = 𝐛3 − 𝐯2
sehingga jelas (karena latis adalah grup) bahwa 𝐛3′ ∈ ℒ(ℬ), dan diperoleh
persamaan
𝐛3∗ = 𝐛3
′ − 𝐭2. Hasil ini menunjukkan bahwa ortogonalisasi 𝐛3
′ juga menghasilkan 𝐛3∗
dengan vektor proyeksi 𝐛3′ pada 𝒮2 adalah
𝐭2 = 𝜇3,1′ 𝐛1
∗ + 𝜇3,2′ 𝐛2
∗ =𝐛3′ . 𝐛1
∗
𝐛1∗ . 𝐛1
∗ 𝐛1∗ +
𝐛3′ . 𝐛2
∗
𝐛2∗ . 𝐛2
∗ 𝐛2∗
dan dalam hali ini untuk 𝑖 = 1, 2 berlaku
𝜇3,𝑖′ = 𝜇3,𝑖 − ⌊𝜇3,𝑖⌉ sehingga |𝜇3,1
′ | <1
2.
Selanjutnya untuk menghitung 𝐛3′ berarti cukup menghitung 𝐯2 dengan
menggunakan Algoritme 4.2 dan
𝐛3′ = 𝐛3 − 𝐯2.
Demikian seterusnya, dari Langkah 3 tersebut secara rekursif bila
dilanjutkan sampai ke Langkah ke-n untuk memperoleh basis ℬ′ hasil
transformasi dari basis latis ℬ. Bukti lengkap. ∎
Perhatikan bahwa makna geometrik dari transformasi ℬ ke ℬ′ dalam
Teorema 4.3 beserta buktinya adalah memperkecil panjang vektor basis yaitu 𝑗 =
1, 2, … , 𝑛 berlaku ‖𝐛𝑗‖ ≥ ‖𝐛𝑗′‖. Hal ini terlihat dari vektor proyeksi 𝐩𝑖−1 , hasil
proyeksi dari 𝐛𝑖 ke subruang 𝒮𝑖−1 untuk 𝑖 = 1, 2, … , 𝑛 ditransformasikan ke
vektor proyeksi 𝐭𝑖−1 , hasil proyeksi dari 𝐛𝑖′ ke subruang 𝒮𝑖−1 . Jika 𝐩𝑖−1 ∈
𝒞({𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑖−1∗ }), maka 𝐛𝑖
= 𝐛𝑖′ tetapi jika 𝐩𝑖−1 ∉ 𝒞({𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑖−1
∗ }), maka
𝐛𝑖 bias ditransformasikan 𝐛𝑖
′ dengan vektor proyeksi pada 𝒮𝑖−1 adalah 𝐭 ∈𝒞({𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑖−1
∗ }) sehingga ‖𝐛𝑖‖ ≥ ‖𝐛𝑖′‖ . Dengan demikian, Teorema 4.3
beserta buktinya merupakan landasan teori yang digunakan untuk menyusun
algoritme reduksi ukuran dari algoritme LLL berikut ini.
Algoritme 4.3 (Algoritme Reduksi Ukuran)
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ). Output: ℬ∗ = [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ ] adalah hasil proses ortogonalisasi Gram-
Schmidt dari ℬ dan ℬ′ = [𝐛1′ , 𝐛2
′ , … , 𝐛𝑛′ ] adalah hasil reduksi ukuran dari ℬ.
25
1. Inisialisasi 𝐛1∗ ≔ 𝐛1 dan 𝐛1
′ = 𝐛1 .
2. Untuk 𝑗 = 2, 3, … , 𝑛 hitung:
a) 𝐩 ≔ 𝟎
b) Untuk 𝑗 = 1, 2, … , 𝑗 − 1 hitung
i. 𝜇𝑗,𝑖 =
𝐛𝑗 .𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
ii. 𝐩 ≔ 𝐩 + 𝜇𝑗,𝑖 𝐛𝑖
c) 𝐛𝑗∗ ≔ 𝐛𝑗 − 𝐩
d) Gunakan Algoritme 4.2 untuk menghitung vektor 𝐯 dengan
input ℬ = [𝐛1, 𝐛2, … , 𝐛𝑗−1] dan ℬ∗ = [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑗−1∗ ] serta 𝐩.
e) 𝐛𝑗′ ≔ 𝐛𝑗 − 𝐯
3. return([𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] dan [𝐛1
′ , 𝐛2′ , … , 𝐛𝑛
′ ]).
Berikut ini langkah-langkah ilustratif penyusunan algoritme reduksi ukuran
LLL yang sifatnya rekursif tanpa memanggil Algoritme 4.2.
1. Untuk 𝑗 = 1, definisikan langsung
𝐛1∗ = 𝐛1 dan 𝐛1
′ = 𝐛1. 2. Untuk 𝑗 = 2 , perhatikan bahwa 𝐩1 = 𝜇2,1𝐛1
∗ , berdasarkan Algoritme 4.2
maka
𝐯1 = ⌊𝐩 . 𝐛1
∗
𝐛1∗ . 𝐛1
∗⌉ 𝐛1 = ⌊𝜇2,1⌉𝐛1
.
Jadi untuk menghitung 𝐛2∗ dan 𝐛2
′ cukup menghitung dahulu 𝜇2,1, kemudian
𝐛2∗ = 𝐛2
− 𝐩1 = 𝐛2 − 𝜇2,1𝐛1
∗
dan
𝐛2′ = 𝐛2
− 𝐯1 = 𝐛2 − ⌊𝜇2,1⌉𝐛1
.
3. Untuk 𝑗 = 3, perhatikan bahwa 𝐩2 = 𝜇3,1𝐛1∗ + 𝜇3,2𝐛2
∗ , berdasarkan
Algoritme 4.2 nyatakan 𝐯2 = 𝐯2,2 + 𝐯2,1 sehingga
𝐯2,2 = ⌊𝐩2. 𝐛2
∗
𝐛2∗ . 𝐛2
∗⌉ 𝐛2 = ⌊𝜇3,2⌉𝐛2
dan
𝐯2,1 = ⌊(𝐩2 − ⌊𝜇3,2⌉𝐛2
− 𝜇3,2′ 𝐛2
∗)𝐛1∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1
= ⌊𝜇3,1 − ⌊𝜇3,2⌉(𝜇2,1)⌉𝐛1 .
Jadi untuk menghitung 𝐛3∗ dan 𝐛3
′ dapat dilakukan secara rekursif sebagai
berikut.
a) Untuk 𝑖 = 2, hitung 𝜇3,2, kemudian
𝐛3∗ = 𝐛3
− 𝜇3,2𝐛2
dan
𝐛3′ = 𝐛3
− 𝐯2,2 = 𝐛3 − ⌊𝜇3,2⌉𝐛2
b) Untuk 𝑖 = 1, hitung 𝜇3,1, kemudian
𝐛3∗ = 𝐛3
− 𝜇3,1𝐛1
dan
𝐛3′ = 𝐛3
′ − 𝐯2,1
= 𝐛3′ − ⌊𝜇3,1 − ⌊𝜇3,2⌉(𝜇2,1)⌉𝐛1
.
26
4. Untuk 𝑗 = 4, perhatikan bahwa 𝐩3 = 𝜇4,1𝐛1∗ + 𝜇4,2𝐛2
∗ + 𝜇4,3𝐛3∗ berdasarkan
Algoritme 4.2 nyatakan 𝐯3 = 𝐯3,3 + 𝐯3,2 + 𝐯3,1 sehingga
𝐯3,3 = ⌊𝐩3. 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3 = ⌊
(𝜇4,3𝐛3∗). 𝐛3
∗
𝐛3∗ . 𝐛3
∗ ⌉ 𝐛3 = ⌊𝜇4,3⌉𝐛3
dan
𝐯3,2 = ⌊(𝐩 − (⌊𝜇4,3⌉𝐛3
+ 𝜇4,3′ 𝐛3
∗))𝐛2∗
𝐛2∗ . 𝐛2
∗ ⌉ 𝐛2
= ⌊𝜇4,2 − ⌊𝜇4,3⌉(𝜇3,2)⌉𝐛2
𝐯3,1 = ⌊(𝐩 − (⌊𝜇4,3⌉𝐛3
+ 𝜇4,3′ 𝐛3
∗) − (⌊𝜇4,2⌉𝐛2 + 𝜇4,2
′ 𝐛2∗))𝐛1
∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1
= ⌊𝜇4,1 − ⌊𝜇4,3⌉𝜇3,1 − ⌊𝜇4,2⌉𝜇2,1⌉𝐛1 .
Jadi untuk menghitung 𝐛4∗ dan 𝐛4
′ dapat dilakukan secara rekursif sebagai
berikut.
a) Untuk 𝑖 = 3, hitung 𝜇4,3, kemudian
𝐛4∗ = 𝐛4
− 𝜇4,3𝐛3∗
dan
𝐛4′ = 𝐛4
− ⌊𝜇4,3⌉𝐛3 .
b) Untuk 𝑖 = 2, hitung 𝜇4,2, kemudian
𝐛4∗ = 𝐛4
∗ − 𝜇4,2𝐛2∗
dan
𝐛4′ = 𝐛4
′ − ⌊𝜇4,2 − ⌊𝜇4,3⌉(𝜇3,2)⌉𝐛2 .
c) Untuk 𝑖 = 1, hitung 𝜇4,1, kemudian
𝐛4∗ = 𝐛4
∗ − 𝜇4,1𝐛1∗
dan
𝐛4′ = 𝐛4
′ − ⌊𝜇4,1 − ⌊𝜇4,3⌉𝜇3,1 − ⌊𝜇4,2⌉𝜇2,1⌉.
Berdasarkan pola Langkah 4 tersebut, berikut ini diberikan algoritme
reduksi ukuran yang sifatnya rekursif.
Algoritme 4.4 (Reduksi Ukuran LLL)
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ). Output: ℬ∗ = [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ ] adalah hasil proses ortogonalisasi Gram-
Schmidt dari ℬ dan ℬ′ = [𝐛1′ , 𝐛2
′ , … , 𝐛𝑛′ ] adalah hasil reduksi ukuran dari ℬ.
1. 𝐛1∗ ≔ 𝐛1
2. 𝐛1′ = 𝐛1
3. 𝜇21 ≔𝐛2 .𝐛1
∗
𝐛1∗ .𝐛1
∗
4. 𝐛2∗ ≔ 𝐛1
− 𝜇21𝐛1∗
5. 𝐛2′ ≔ 𝐛2
− ⌊𝜇21⌉𝐛1
6. Untuk 𝑗 = 3,4, … , 𝑛 lakukan:
a) 𝐛𝑗∗ ≔ 𝐛𝑗
b) 𝐛𝑗 ≔ 𝐛𝑗
27
c) 𝜇𝑗,𝑗−1 ≔𝐛𝑗 .𝐛𝑗−1
∗
𝐛𝑗−1∗ .𝐛𝑗−1
∗
d) 𝐛𝑗∗ ≔ 𝐛𝑗 − 𝜇𝑗,𝑗−1𝐛𝑗−1
e) 𝐛𝑗′ ≔ 𝐛𝑗
′ − 𝜇𝑗,𝑗−1𝐛𝑗−1
f) Untuk 𝑖 = 𝑗 − 2, 𝑗 − 3,… , 1 lakukan:
i. 𝜇𝑗,𝑖 =
𝐛𝑗 .𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
ii. 𝐛𝑗∗ ≔ 𝐛𝑗 − 𝜇𝑗,𝑖
𝐛𝑖∗
iii. 𝑐 ≔ 𝜇𝑗,𝑖
iv. Untuk 𝑘 = 𝑖, 𝑖 + 1,… , 𝑗 − 2 lakukan:
𝑐 ≔ 𝑐 − ⌊𝜇𝑗,𝑘+1⌉𝜇𝑘+1,𝑖
v. 𝐛𝑗′ ≔ 𝐛𝑗
′ − ⌊𝑐⌉𝐛𝑖
7. return([𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] dan [𝐛1
′ , 𝐛2′ , … , 𝐛𝑛
′ ]).
Berikut ini merupakan langkah-langkah ilustratif penyusunan algoritme
reduksi ukuran LLL dengan menggunakan rumus rekursif yang lebih sederhana.
1. Untuk 𝑗 = 1 definisikan langsung
𝐛1∗ = 𝐛1
dan 𝐛1′ = 𝐛1
. 2. Untuk 𝑗 = 2, perhatikan bahwa 𝐩1
= 𝜇2,1𝐛1∗ , berdasarkan Algoritme 4.2
maka
𝐯1 = ⌊
𝐩1 . 𝐛1
∗
𝐛1∗ . 𝐛1
∗⌉ 𝐛1∗ = ⌊𝜇2,1⌉𝐛1
∗ .
Jadi, untuk menghitung 𝐛2∗ dan 𝐛2
′ , cukup menghitung dahulu 𝜇2,1 ,
kemudian
𝐛2∗ = 𝐛2
− 𝐩1 = 𝐛2
− 𝜇2,1𝐛1∗
dan
𝐛2′ = 𝐛2
− 𝐯1 = 𝐛2
− ⌊𝜇2,1⌉𝐛1 .
3. Untuk 𝑗 = 3, dari uraian sebelumnya,
𝐛3′ = (𝐛3
− ⌊𝜇3,2⌉𝐛2∗) − ⌊𝜇3,1 − ⌊𝜇3,2⌉(𝜇2,1)⌉𝐛1
= (𝐛3 − ⌊𝜇3,2⌉𝐛2
∗) − ⌊(𝐛3
− ⌊𝜇3,2⌉𝐛2 ). 𝐛1
∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1
= 𝐱 − 𝐲
𝐱 = (𝐛3 − ⌊𝜇3,2⌉(𝐛2
′ + ⌊𝜇2,1⌉𝐛1∗))
𝐲 = ⌊(𝐛3 −⌊𝜇3,2⌉(𝐛2
′+⌊𝜇2,1⌉𝐛1∗)).𝐛1
∗
𝐛1∗ .𝐛1
∗ ⌉ 𝐛1
𝐱 = 𝐛3 – ⌊𝜇3,2⌉𝐛2
′ − ⌊𝜇3,2⌉⌊𝜇2,1⌉𝐛1∗
𝐲 = ⌊(𝐛3
– ⌊𝜇3,2⌉𝐛2′ − ⌊𝜇3,2⌉⌊𝜇2,1⌉𝐛1
∗). 𝐛1∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1
= ⌊(𝐛3
– ⌊𝜇3,2⌉𝐛2′ . 𝐛1
∗). 𝐛1∗
𝐛1∗ . 𝐛1
∗ − ⌊𝜇3,2⌉⌊𝜇2,1⌉⌉ 𝐛1
= ⌊(𝐛3
– ⌊𝜇3,2⌉𝐛2′ . 𝐛1
∗). 𝐛1∗
𝐛1∗ . 𝐛1
∗ 𝐛1 ⌉ − ⌊𝜇3,2⌉⌊𝜇2,1⌉𝐛1
.
Dengan demikian, diperoleh
28
𝐛3′ = (𝐛3
− ⌊𝜇3,2⌉𝐛2′ ) − ⌊
(𝐛3 − ⌊𝜇3,2⌉𝐛2
′). 𝐛1∗
𝐛1∗ . 𝐛1
∗ ⌉ 𝐛1 .
Jadi untuk menghitung 𝐛3∗ dan 𝐛3
′ , dapat dilakukan secara rekursif sebagai
berikut.
(a) Untuk 𝑖 = 2, hitung 𝜇3,2 kemudian
𝐛3∗ = 𝐛3
∗ − 𝜇3,2𝐛2∗
dan
𝐛3′ = 𝐛3
− ⌊𝜇3,2⌉𝐛2′ .
(b) Untuk 𝑖 = 1, hitung 𝜇3,1 kemudian
𝐛3∗ = 𝐛3
∗ − 𝜇3,1𝐛1∗
dan
𝐛3′ = 𝐛3
′ − ⌊𝐛3′ . 𝐛1
∗
𝐛1∗ . 𝐛1
∗⌉ 𝐛1′ .
Berdasarkan pola dari 3 langkah tersebut, berikut ini diberikan algoritme
reduksi ukuran yang sifatnya rekursif.
Algoritme 4.5 (Reduksi ukuran LLL)
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ). Output: ℬ∗ = [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ ] adalah hasil proses ortogonalisasi Gram-
Schmidt dari ℬ dan ℬ′ = [𝐛1′ , 𝐛2
′ , … , 𝐛𝑛′ ] adalah hasil reduksi ukuran dari ℬ.
1. 𝐛1∗ ≔ 𝐛1
2. 𝐛1′ = 𝐛1
3. Untuk 𝑗 = 2, 3, … , 𝑛 lakukan:
a) Untuk 𝑖 = 𝑗 − 1, 𝑗 − 2,… ,1 lakukan:
i. 𝜇𝑗,𝑖 ≔𝐛𝑗.𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
ii. 𝐛𝑗∗ ≔ 𝐛𝑗
∗ − 𝜇𝑗,𝑖𝐛𝑖∗
iii. 𝜇𝑗,𝑖′ ≔
𝐛𝑗′ .𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
iv. 𝐛𝑗′ ≔ 𝐛𝑗
− ⌊𝜇𝑗,𝑖′ ⌉𝐛𝑖
4. return([𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] dan [𝐛1
′ , 𝐛2′ , … , 𝐛𝑛
′ ]).
Algoritme LLL dan Analisisnya
Inti dari algoritme LLL adalah mentransformasikan basis latis ke basis latis
ℬ′ yang tereduksi LLL sebagaimana dinyatakan dalam Definisi 4.11. Dengan
demikian, hal pertama yang harus dilakukan adalah mereduksi ukuran dari ℬ
dengan menggunakan algoritme reduksi ukuran. Kemudian, ketika ada indeks ke-𝑗 sehingga syarat kedua dari Definisi 4.11 tidak terpenuhi yaitu
𝛿‖𝜋𝑗(𝐛𝑗 )‖
2> ‖𝜋𝑗(𝐛𝑗+1
)‖2⟺ (𝛿 − (𝜇𝑗+1,𝑗)
2) ‖𝐛𝑗
∗‖2> ‖𝐛𝑗+1
∗ ‖2,
maka urutan 𝐛𝑗 dan 𝐛𝑗+1
ditukar dan reduksi ukuran diulang. Jika ada beberapa
pasang (𝐛𝑗 , 𝐛𝑗+1
) yang tidak memenuhi syarat kedua tersebut, tidak ada masalah
mana yang harus dipilih untuk ditukar. Bahkan, dapat dipilih beberapa pasang
vektor yang saling bebas untuk ditukar bersamaan, ini mengarah pada varian
algoritme LLL paralel. Algoritme LLL aslinya pasangan nilai yang dipilih adalah
nilai 𝑗 terkecil. Berikut ini diberikan secara garis besar deskripsi algoritme LLL.
29
1. (Langkah Reduksi Ukuran) terapkan algoritme reduksi ukuran pada ℬ.
2. (Langkah Penukaran) jika ada 𝑗 ∈ {2, 3, … , 𝑛} sehingga
(𝛿 − (𝜇𝑗,𝑗−1)2) ‖𝐛𝑗−1
∗ ‖2> ‖𝐛𝑗
∗‖2
maka tukar 𝐛𝑗−1 dan 𝐛𝑗
, kemudian kembali ke Langkah 1.
3. Jika tidak, algoritme selesai.
Sedangkan bentuk praktis algoritme LLL diberikan berikut ini.
Algoritme 4.6
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ) dan 1
4< 𝛿 < 1.
Output: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] adalah adalah basis tereduksi LLL untuk ℒ(ℬ) dan ℬ∗ = [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ ] adalah hasil proses ortogonalisasi Gram-Schmidt dari
ℬ.
1. 𝐛1∗ ≔ 𝐛1
2. 𝑗 ≔ 2
3. Reduksi Ukuran. Ketika 𝑗 ≤ 𝑛, lakukan:
(a) 𝐛𝑗∗ ≔ 𝐛𝑗
(b) Untuk 𝑖 = 𝑗 − 1, 𝑗 − 2,… ,1 lakukan:
i. 𝜇𝑗,𝑖 ≔𝐛𝑗.𝐛𝑖
∗
𝐛𝑖∗.𝐛𝑖
∗
ii. 𝐛𝑗∗ ≔ 𝐛𝑗
∗ − 𝜇𝑗,𝑖𝐛𝑖∗
iii. 𝐛𝑗 ≔ 𝐛𝑗
− ⌊𝜇𝑗,𝑖 ⌉𝐛𝑖
(c) Penukaran. Jika (𝛿 − (𝜇𝑗,𝑗−1)2) ‖𝐛𝑗−1
∗ ‖2> ‖𝐛𝑗
∗‖2 maka
i. Jika 𝑗 = 2,
Tukar 𝐛1 dan 𝐛2
𝐛1∗ ≔ 𝐛2
ii. Jika 𝑗 > 2, Tukar 𝐛𝑗−1
dan 𝐛𝑗
𝑗 ≔ 𝑗 − 1
Selainnya, 𝑗 ≔ 𝑗 + 1
4. return([𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] dan [𝐛1
′ , 𝐛2′ , … , 𝐛𝑛
′ ]).
Membatasi banyaknya iterasi
Diasumsikan dahulu bahwa basis latisnya adalah bilangan bulat, artinya ℬ ∈ℤ𝑛. Kemudian, dapat diamati bahwa algoritme LLL cepat selesai jika tidak terlalu
banyak terjadinya iterasi yang diindikasikan di dalam langkah penukaran. Oleh
karena itu, hal pertama yang perlu diperhatikan dalam menganalisis algoritme
LLL adalah seberapa besar jumlah maksimum terjadinya penukaran. Dengan
demikian, perlu didefinisikan suatu bilangan bulat positif yang terkait dengan
matriks basis B berikut ini.
Ingat kembali determinan latis sebagai berikut.
det (ℒ([𝐛1, 𝐛2, … , 𝐛𝑗])) = ∏ ‖𝐛𝑖∗‖𝑗
𝑖=1 ⇔ det (ℒ(ℬ𝑗)) = √det(𝐁𝑗𝑇𝐁𝑗),
dimana matriks
𝐁𝑗 = [𝐛1 𝐛2 … 𝐛𝑗].
30
Dari asumsi 𝐁𝑗 adalah matriks bilangan bulat, jelas bahwa
[det (ℒ(𝐁𝒋))]2
∈ ℤ.
Dengan demikian, dapat didefinisikan bilangan bulat positif 𝒟 yang terkait
dengan matriks basis B yaitu
𝒟 =∏[det (ℒ([𝐛1, 𝐛2, … , 𝐛𝑗]))]2
=
𝑛
𝑗=1
∏[det (ℒ(𝐁𝒋))]2
𝑛
𝑗=1
dan berlaku sifat dalam proposisi berikut ini.
Proposisi 4.8
Langkah reduksi ukuran tidak mengubah nilai 𝒟, tetapi setiap terjadi
penukaran, mengakibatkan nilai 𝒟 menurun, dengan faktor 𝛿.
Bukti:
Berdasarkan Teorema 4.3, perhatikan dahulu bahwa langkah reduksi ukuran
tidak dapat mengubah nilai 𝒟 . Dengan demikian, tinggal ditunjukkan bahwa
setiap terjadi pertukaran, nilai 𝒟 menurun dengan faktor 𝛿 . Misalkan terjadi
penukaran 𝐛𝑗 dan 𝐛𝑗+1, misalkan pula bilangan bulat positif 𝒟 terkait dengan B
sebelum terjadinya penukaran, dan 𝒟′ terkait dengan 𝐁′ setelah 𝐛𝑗 dan 𝐛𝑗+1
ditukar. Perhatikan bahwa, 𝑖 < 𝑗 maka basis [𝐛1, 𝐛2, … , 𝐛𝑖] tidak berubah oleh
terjadinya penukaran sehingga jelas bahwa
[det(ℒ(𝐁𝒊))]2= [det(ℒ(𝐁′𝒊))]
2.
Ketika 𝑖 > 𝑗 maka basis [𝐛1, 𝐛2, … , 𝐛𝑖], vektor 𝐛𝑗 dan 𝐛𝑗+1 ditukar (menukar
sepasang vektor kolom pada 𝐁1) sehingga
ℒ(𝐁𝑖) = ℒ(𝐁′𝑖) ⇒ [det(ℒ(𝐁𝒊))]2= [det(ℒ(𝐁′𝒊))]
2.
Di lain pihak, untuk 𝑖 = 𝑗 maka basis 𝐁𝑗 = [𝐛1, 𝐛2, … , 𝐛𝑗−1, 𝐛𝑗] berubah
menjadi 𝐁𝑗′ = [𝐛1, 𝐛2, … , 𝐛𝑗−1, 𝐛𝑗+1] sehingga
[det (ℒ(𝐁𝑗))]2
=∏‖𝐛𝑖∗‖2 = (∏‖𝐛𝑖
∗‖2𝑗−1
𝑖=1
)
𝑗
𝑖=1
(‖𝐛𝑗∗‖2).
Karena syarat pertukaran (𝛿 − (𝜇𝑗+1,𝑗)2) ‖𝐛𝑗
∗‖2> ‖𝐛𝑗+1
∗ ‖2 maka berlaku
[det (ℒ(𝐁𝑗))]2
> (∏‖𝐛𝑖∗‖2
𝑗−1
𝑖=1
)(1
(𝛿 − (𝜇𝑗+1,𝑗)2)) ‖𝐛𝑗+1
∗ ‖2
> (1
(𝛿 − (𝜇𝑗+1,𝑗)2))(∏‖𝐛𝑖
∗‖2𝑗−1
𝑖=1
)‖𝐛𝑗+1∗ ‖
2
>1
𝛿[det (ℒ(𝐁′𝒋))]
2
⇔[det (ℒ(𝐁′𝒋))]
2
[det (ℒ(𝐁𝒋))]2 < 𝛿.
Akhirnya,
31
𝐷′
𝒟=∏ [det (ℒ(𝐁′𝒋))]
2𝑛𝑗=1
∏ [det (ℒ(𝐁 𝒋))]2
𝑛𝑗=1
=[det (ℒ(𝐁′𝒋))]
2
[det (ℒ(𝐁𝒋))]2 < 𝛿
𝒟′ < 𝛿. 𝒟 ⇔ 𝒟 >1
𝛿𝒟′ ⇒ 𝒟 ≥
1
𝛿𝒟′.
Berdasarkan proposisi tersebut, sekarang dimisalkan 𝑘 menyatakan iterasi
dalam algoritme LLL dan 𝒟(𝑗) 𝐷′ pada iterasi ke−𝑗 maka
𝒟 ≥ 𝛿−1𝒟(1) ≥ 𝛿−2𝒟(2) ≥ ⋯ ≥ 𝛿−𝑘𝒟(𝑘). Karena untuk setiap 𝑗 nilai 𝒟(𝑗) adalah bilangan bulat positif, maka
𝒟(𝑘) ≥ 1 ⇒ 𝒟 ≥ 𝛿−𝑘 ⇔ 𝒟 ≥ (1
𝛿)𝑘
⇔ 𝑘 ≤ log1𝛿
𝒟.
Hal ini menunjukkan bahwa banyaknya iterasi terbatas ke atas pada fungsi
yang nilainya bergantung pada nilai awal 𝒟. Karena menghitung
𝒟 =∏(∏‖𝐛𝑖∗‖2
𝑗
𝑖=1
)
𝑛
𝑗=1
≤∏(∏‖𝐛𝑖 ‖2
𝑗
𝑖=1
)
𝑛
𝑗=1
membutuhkan waktur polinomial, maka dapat disimpulkan banyaknya iterasi
dalam algoritme LLL juga terbatas secara polinomial dalam ukuran input. Bukti
lengkap. ∎
Membatasi besarnya bilangan yang terlibat
Telah ditunjukkan bahwa banyaknya iterasi dalam algoritme LLL terbatas
secara polinomial dalam ukuran input. Namun demikian, hal ini belum cukup
untuk menyimpulkan bahwa algoritme LLL mempunyai running time polinomial.
Masih perlu untuk memastikan bahwa ukuran bilangan yang dilibatkan dalam
keseluruhan komputasi juga terbatas secara polinomial. Algoritme LLL
menggunakan aritmatika bilangan rasional, sehingga perlu membatasi baik
presisinya maupun besarannya.
Perhatikan bahwa langkah ke-𝑗 dari proses Gram-Schmidt dapat dirumuskan
ulang sebagai
𝐛𝑗∗ = 𝐛𝑗 +∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖 (13)
untuk suatu 𝜐𝑗𝑖 ∈ ℝ. Karena 𝐛𝑗∗ ortogonal ke 𝐛𝑡 untuk setiap 𝑡 < 𝑗 maka diperoleh
𝐛𝑡. 𝐛𝑗∗ = ( 𝐛𝑡. 𝐛𝑗) + 𝐛𝑡.∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖
⇔ 𝟎 = ( 𝐛𝑡. 𝐛𝑗) + 𝐛𝑡.∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖
⇔ 𝐛𝑡.∑𝜐𝑗𝑖
𝑗−1
𝑖=1
𝐛𝑖 = −( 𝐛𝑡. 𝐛𝑗). (14)
Untuk 𝑡 = 1, 2, … , 𝑗 − 1, persamaan tersebut dapat dituliskan dalam bentuk
matriks
32
(
𝐛1. ∑ 𝜐𝑗𝑖𝑗−1𝑖=1 𝐛𝑖
𝐛2. ∑ 𝜐𝑗𝑖𝑗−1𝑖=1 𝐛𝑖
⋮
𝐛𝑗−1. ∑ 𝜐𝑗𝑖𝑗−1𝑖=1 𝐛𝑖
)
= −
(
𝐛1. 𝐛𝑗𝐛2. 𝐛𝑗⋮
𝐛𝑗−1. 𝐛𝑗)
.
Jika didefinisikan matriks
𝐁𝑗−1 = (𝐛1 𝐛2 … 𝐛𝑗−1)
dan matriks
𝐮𝑗 = (
𝜐𝑗1𝜐𝑗2⋮
𝜐𝑗,𝑗−1
),
maka persamaan (14) dapat ditulis sebagai
(
𝐛1. (𝐁𝑗−1𝐮𝑗)
𝐛2. (𝐁𝑗−1𝐮𝑗)
⋮𝐛𝑗−1. (𝐁𝑗−1𝐮𝑗))
= −
(
𝐛1. 𝐛𝑗𝐛2. 𝐛𝑗⋮
𝐛𝑗−1. 𝐛𝑗)
⇔ 𝐁𝑗−1𝑇 (𝐁𝑗−1𝐮𝑗) = −𝐁𝑗−1
𝑇 𝐛𝑗
⇔ (𝐁𝑗−1𝑇 𝐁𝑗−1)𝐮𝑗 = −𝐁𝑗−1
𝑇 𝐛𝑗. (15)
Persamaan (15) merupakan SPL dengan matriks koefisien 𝐁𝑗−1𝑇 𝐁𝑗−1 dan
vektor −𝐁𝑗−1𝑇 𝐛𝑗 adalah bilangan bulat. Dengan demikian, untuk 𝑠 = 1, 2, … , 𝑗 − 1,
berdasarkan aturan Cramer diperoleh
𝜐𝑗𝑠 ∈ℤ
det(𝐁𝑗−1𝑇 𝐁𝑗−1)
=ℤ
det (ℒ(ℬ𝑗−1))2.
Hasil ini akan digunakan untuk memberi batas pada koefisien 𝜇𝑗,𝑖.
Perhatikan lagi definisi 𝒟 sebagai
𝒟 =∏[det (ℒ(𝐁 𝒋))]2
∏(𝐁𝑗𝑇𝐁𝑗)
𝑛
𝑗=1
⇔
𝑛
𝑗=1
𝒟 =∏𝒟𝑗
𝑛
𝑗=1
dengan 𝒟𝑗 = det(𝐁𝑗𝑇𝐁𝑗) . Kemudian, dihitung = det(𝐁𝑗−1
𝑇 𝐁𝑗−1) dan dikalikan
kedua ruas dari persamaan (13) maka diperoleh
𝒟𝑗−1𝐛𝑗∗ = 𝒟𝑗−1𝐛𝑗 +∑(𝒟𝑗−1𝜐𝑗𝑖)
𝑗−1
𝑖=1
𝐛𝑖
dan karena 𝒟𝑗−1𝜐𝑗𝑖 ∈ ℤ maka 𝒟𝑗−1𝐛𝑗∗ ∈ ℤ𝑛 . Ini berarti semua penyebut dari
bilangan dalam vektor 𝐛𝑗∗ adalah faktor 𝒟𝑗−1. Sekarang dihitung
𝜇𝑗𝑖 =𝐛𝑗. 𝐛𝑖
∗
𝐛𝑖∗. 𝐛𝑖
∗ =𝒟𝑖−1(𝐛𝑗. 𝐛𝑖
∗)
𝒟𝑖−1(𝐛𝑖∗. 𝐛𝑖
∗)=
𝐛𝑗(𝒟𝑖−1. 𝐛𝑖∗)
(∏ ‖𝐛𝑠∗‖𝟐𝑖−1𝑠=1 )‖𝐛𝑖
∗‖𝟐 ∈
ℤ
𝒟𝑖.
Hasil ini menunjukkan bahwa penyebut dari 𝜇𝑗𝑖 harus membagi 𝒟𝑖 . Oleh
karena itu, bilangan rasional yang ada didalam vektor
𝐛𝑗∗ = 𝐛𝑗 −∑𝜇𝑗,𝑖
𝑗−1
𝑖=1
𝐛𝑖∗
33
dan 𝜇𝑗,𝑖 dapat dituliskan dengan penyebut 𝒟 (ingat bahwa 𝒟 adalah kelipatan
setiap 𝒟𝑖).
Karena |𝜇𝑗,𝑖| ≤1
2, maka ukuran bit yang digunakan terbatas pada log𝒟 .
Kemudian dari
𝒟𝑗 =∏‖𝐛𝑠∗‖𝟐
𝑗
𝑠=1
diperoleh
‖𝐛𝑗∗‖𝟐=
𝒟𝑗
𝒟𝑗−1≤ 𝒟𝑗 ≤ 𝒟
akhirnya
‖𝐛𝑗 ‖𝟐= ‖𝐛𝑗
∗‖𝟐+∑𝜇𝑗,𝑖
2
𝑗−1
𝑖=1
‖𝐛𝑗∗‖𝟐≤ 𝒟 + (𝑗 − 1) (
1
4)𝒟
≤ 𝒟 + (𝑛
4)𝒟 ≤ 𝒟.
Dengan demikian semua pembilang dan penyebut dari bilangan rasional
yang terjadi di dalam eksekusi algoritme LLL mempunyai ukuran bit yang
terbatas secara polinomial dalam log𝒟.
Memperbaiki algoritme LLL
Seperti terlihat pada analisis algoritmenya, kecepatan dan ketepatan hasil
(output) algoritme LLL lebih dominan ditentukan oleh banyaknya langkah
penukaran yang terjadi. Memberi nilai 𝛿 yang lebih besar, algoritme akan
mengeluarkan hasil yang lebih baik, tetapi ini harus dibayar dengan meningkatnya
banyaknya langkah penukaran (menurunnya kecepatan), demikian pula
sebaliknya. Jadi, yang dimaksud dengan memperbaiki algoritme LLL umumnya
adalah bagaimana meningkatkan kecepatan dengan keluaran yang lebih baik.
Pada bagian ini akan dibahas varian yang pertama dari algoritme LLL yaitu
metode penyisipan dalam (deep insertion).
Algoritme LLL Penyisipan Dalam
Jika di dalam algoritme LLL, uji terjadinya penukaran secara terurut
langkah demi langkah (𝐛𝑗 dengan 𝐛𝑗−1
) maka dengan metode penyisipan dalam
(Deep Insertion), uji terjadinya penukaran bisa dilakukan langsung ke dalam (𝐛𝑗
dengan 𝐛𝑘 untuk 𝑘 = 1,2, … , 𝑗 − 1. Hal ini dijelaskan berikut ini.
Misalkan pada suatu tahap komputasi diperoleh basis latis terurut seperti ini
𝐛1 , 𝐛2
, … , 𝐛𝑘−1 , 𝐛𝑘
, 𝐛𝑘+1 , … , 𝐛𝑗−1
, 𝐛𝑗 , 𝐛𝑗+1
, … , 𝐛𝑛 ,
maka prosedur ortogonalisasi Gram-Schmidt dirumuskan sebagai
𝐛𝑗∗ = 𝐛𝑗 −∑𝜇𝑗,𝑖
𝑗−1
𝑖=1
𝐛𝑖∗ untuk 𝑗 = 1,2, … , 𝑛
⇔ 𝐛𝑗 = 𝐛𝑗∗ +∑𝜇𝑗,𝑖
𝑗−1
𝑖=1
𝐛𝑖∗ untuk 𝑗 = 1,2, … , 𝑛.
34
Kemudian, karena 𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑗∗ ortogonal, diperoleh
‖𝐛𝑗‖2= ‖𝐛𝑗
∗‖2+∑𝜇𝑗,𝑖
2
𝑗−1
𝑖=1
‖𝐛𝑖∗‖2.
Jika disisipkan 𝐛𝑗 ke 𝐛𝑘
, maka basis latis terurut menjadi
𝐛1 , 𝐛2
, … , 𝐛𝑘−1 , 𝐛𝑗
, 𝐛𝑘 , 𝐛𝑘+1
, … , 𝐛𝑗−1 , 𝐛𝑗+1
, … , 𝐛𝑛 .
Dengan vektor-vektor 𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑘−1∗ tetap, sedangkan prosedur
ortogonalisasi Gram-Schmidt untuk 𝐛𝑘 diperbaharui yaitu
�̂�𝑘∗ = 𝐛𝑗 −∑𝜇𝑗,𝑖
𝑘−1
𝑖=1
𝐛𝑖∗ ⇔ 𝐛𝑗 = �̂�𝑘
∗ +∑𝜇𝑗,𝑖
𝑘−1
𝑖=1
𝐛𝑖∗,
kemudian
‖𝐛𝑗‖2= ‖�̂�𝑘
∗‖𝟐+∑𝜇𝑗,𝑖
2
𝑘−1
𝑖=1
‖𝐛𝑖∗‖2 ⇔ ‖�̂�𝑘
∗‖𝟐= ‖𝐛𝑗‖
2−∑𝜇𝑗,𝑖
2
𝑘−1
𝑖=1
‖𝐛𝑖∗‖2. (16)
Sekarang tinjau persamaan terakhir untuk kasus 𝑘 = 𝑗 − 1, maka
‖�̂�𝑗−1∗ ‖
𝟐= ‖𝐛𝑗‖
2−∑𝜇𝑗,𝑖
2
𝑗−2
𝑖=1
‖𝐛𝑖∗‖2
= ‖𝐛𝑗∗ −∑𝜇𝑗,𝑖
𝑗−1
𝑖=1
𝐛𝑖∗‖
2
−∑𝜇𝑗,𝑖2
𝑗−2
𝑖=1
‖𝐛𝑖∗‖2
= ‖𝐛𝑗∗‖2∑𝜇𝑗,𝑖
2
𝑗−1
𝑖=1
‖𝐛𝑖∗‖2 −∑𝜇𝑗,𝑖
2
𝑗−2
𝑖=1
‖𝐛𝑖∗‖2
‖�̂�𝑗−1∗ ‖
𝟐= ‖𝐛𝑗
∗‖2+ 𝜇𝑗,𝑗−1
‖𝐛𝑗−1∗ ‖
𝟐.
Hal ini menunjukkan bahwa untuk kasus 𝑘 = 𝑗 − 1 syarat penukaran metode
penyisipan dalam sama dengan syarat penukaran algoritme LLL, yaitu jika
‖�̂�𝑗−1∗ ‖
𝟐< 𝜹‖𝐛𝑗−1
∗ ‖𝟐, maka 𝐛𝑗 ditukar dengan 𝐛𝑗−1. Secara umum, ketika ditinjau
untuk nilai 𝑘 = 1,2,3, … , 𝑗 − 1 maka persamaan (16) diperoleh
‖�̂�1∗‖𝟐= ‖𝐛𝑗‖
𝟐
‖�̂�2∗‖
𝟐= ‖𝐛𝑗‖
𝟐− 𝜇𝑗,1
2 ‖𝐛1∗‖𝟐
‖�̂�3∗‖
𝟐= ‖𝐛𝑗‖
𝟐− 𝜇𝑗,1
2 ‖𝐛1∗‖𝟐 − 𝜇𝑗,2
2 ‖𝐛2∗‖𝟐
⋮
‖�̂�𝑗−1∗ ‖
𝟐= ‖𝐛𝑗‖
𝟐− 𝜇𝑗,1
2 ‖𝐛1∗‖𝟐 − 𝜇𝑗,2
2 ‖𝐛1∗‖𝟐 −⋯− 𝜇𝑗,𝑗−2
2 ‖𝐛𝑗−2∗ ‖
𝟐.
Persamaan-persamaan tersebut dapat digunakan untuk menetapkan nilai 𝑘
sehingga 𝐛𝑗 dapat disisipkan ke 𝐛𝑘. Dalam hal ini terjadi ketika ‖�̂�𝑘∗‖
𝟐< 𝜹‖𝐛𝑘
∗‖𝟐
dan yang menguntungkan adalah bahwa ‖�̂�𝑗−1∗ ‖
𝟐 dapat dihitung secara rekursif
dengan penjelasan sebagai berikut. Didefinisikan inisial 𝐶 = ‖𝐛𝑗‖ dan 𝑘 = 1,
secara rekursif hitung
𝐶 = 𝐶 − 𝜇𝑗,𝑘2 ‖𝐛𝑘
∗‖𝟐 dan 𝑘 ≔ 𝑘 + 1
dan proses berhenti ketika
𝐶 < 𝛿‖𝐛𝑘∗‖𝟐 ⇔ ‖�̂�𝑘
∗‖𝟐< 𝛿‖𝐛𝑘
∗‖𝟐.
35
Bentuk praktis algoritme LLL penyisipan dalam diberikan berikut ini.
Algoritme 4.7 (Algoritme LLL penyisipan dalam)
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ) dan 1
4< 𝛿 < 1.
Output: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] adalah adalah basis tereduksi LLL untuk ℒ(ℬ) dan ℬ∗ = [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ ] adalah hasil proses ortogonalisasi Gram-Schmidt dari
ℬ.
1. 𝐛1∗ ≔ 𝐛1
2. 𝑗 ≔ 2
3. Reduksi Ukuran. Sementara 𝑗 ≤ 𝑛 hitung:
(a) 𝐛𝑗∗ ≔ 𝐛𝑗
(b) Untuk 𝑖 = 𝑗 − 1, 𝑗 − 2,… ,1 hitung:
i. 𝑁𝑖 ≔ 𝐛𝑖∗. 𝐛𝑖
∗
ii. 𝜇𝑗,𝑖 ≔𝐛𝑗 .𝐛𝑖
∗
𝑁𝑖
iii. 𝐛𝑗 = 𝐛𝑗
− ⌊𝜇𝑗,𝑖⌉𝐛𝑖
iv. 𝜇𝑗,𝑖∗ ≔
𝐛𝑗∗.𝐛𝑖
∗
𝑁𝑖
v. 𝐛𝑗∗ ≔ 𝐛𝑗
∗ − 𝜇𝑗,𝑖∗ 𝐛𝑖
∗
(c) Penyisipan Dalam
Hitung 𝐶 = 𝐛𝑗 . 𝐛𝑗
Definisikan 𝑘 ≔ 1
Sementara 𝑘 < 𝑗, hitung:
i. ℎ ≔ 𝐛𝑘∗ . 𝐛𝑘
∗
ii. Jika 𝐶 < 𝛿ℎ, maka
Jika 𝑘 = 1, maka
(Sisipkan 𝐛𝑗 ke posisi-1):
𝐛𝑗 , 𝐛1
, 𝐛2 , 𝐛𝑗−1
, 𝐛𝑗+1 , … , 𝐛𝑛
𝐛1∗ ≔ 𝐛𝑗
Jika tidak, maka
(Sisipkan 𝐛𝑗 ke posisi-k):
𝐛1 , 𝐛2
, … , 𝐛𝑘−1 , 𝐛𝑗
, 𝐛𝑘+1 , … , 𝐛𝑗−1
, 𝐛𝑗+1 , … , 𝐛𝑛
(Hitung vektor ortogonal pada posisi ke-k):
𝐛𝑘∗ ≔ 𝐛𝑗
Untuk 𝑖 ≔ 𝑘 − 1, 𝑘 − 2, … ,1 hitung
𝑁𝑖 ≔ 𝐛𝑖∗. 𝐛𝑖
∗
𝜇𝑘,𝑖∗ ≔
𝐛𝑘∗ .𝐛𝑖
∗
𝑁𝑖
𝐛𝑘∗ ≔ 𝐛𝑘
∗ − 𝜇𝑘,𝑖∗ 𝐛𝑖
∗
Break (Stop loop)
iii. Jika tidak, maka
𝑧 ≔ 𝐛𝑗 . 𝐛𝑘
∗
𝐶 ≔ 𝐶 −𝑧2
ℎ
𝑘 ≔ 𝑘 + 1
(d) 𝑗 ≔ 𝑘 + 1
36
4. return(ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dan ℬ∗ = [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑛
∗ ]).
Algoritme Greedy SVP LLL
Ide dasar metode greedy adalah sebagai berikut. Jika vektor terkecil sudah
di posisi pertama, maka penyisipan hanya akan terjadi di posisi kedua atau lebih;
jika dua vektor terkecil sudah di posisi pertama dan kedua, maka penyisipan
hanya akan terjadi di posisi ketiga atau lebih, demikian juga seterusnya.
Kemudian, semakin cepat diperoleh vektor-vektor terkecil secara terurut, maka
algoritme semakin cepat selesai. Dengan ide dasar ini, diharapkan bahwa vektor-
vektor terkecil tersebut bisa diperoleh secara greedy.
Algoritme pencarian vektor terpendek secara greedy yang akan dikonstruksi
disebut algoritme greedy SVP LLL. Pada algoritme ini syarat penukaran
(penyisipan) tidak didasarkan perbandingan vektor proyeksi pada komplemen
ortogonal [𝐛1, 𝐛2, … , 𝐛𝑘−1]⊥ setelah reduksi ke-j(metode penyisipan dalam),
melainkan penyisipan dilakukan murni dengan membandingkan panjang vektor
latis 𝐛𝑗 dengan panjang vektor latis 𝐛𝑖 untuk 𝑖 = 1, 2,3… , 𝑗 − 1Disamping itu,
penyisipannya dilakukan secara greedy.
Berikut ini secara garis besar cara kerja algoritmenya.
1. Untuk [𝐛1], definisikan 𝐛1∗ = 𝐛1, cari vektor 𝐛𝑗 hasil reduksi [𝐛1] dan [𝐛1
∗]
terhadap [𝐛2, 𝐛3, … , 𝐛𝑛] dengan panjang terkecil. Jika ‖𝐛𝑗‖ < ‖𝐛1‖ ,
sisipkan
𝐛𝑗 , 𝐛1, 𝐛2, 𝐛𝑗−1, 𝐛𝑗+1, … , 𝐛𝑛
diperoleh 𝐛1 = 𝐛𝑗 yang baru dan proses diulang lagi. Tetapi jika ‖𝐛1‖ ≤
‖𝐛𝑗‖ maka disisipkan
𝐛1, 𝐛𝑗, 𝐛2, 𝐛𝑗−1, 𝐛𝑗+1, … , 𝐛𝑛,
sehingga diperoleh [𝐛1, 𝐛2] baru yang terurut dengan ukuran terkecil dalam
barisan tersebut. Kemudian, hitung 𝐛2∗ dari input 𝐛2
dan 𝐛1∗ sehingga
diperoleh barisan [𝐛1∗ , 𝐛2
∗ ] dan lanjut ke Langkah 2.
2. Dari [𝐛1, 𝐛2] dan [𝐛1∗ , 𝐛2
∗ ] , cari vektor 𝐛𝑗 hasil reduksi [𝐛1, 𝐛2] terhadap
[𝐛3, 𝐛4, … , 𝐛𝑛] dengan panjang terkecil. Jika ‖𝐛𝑗‖ < ‖𝐛1‖, sisipkan
𝐛𝑗 , 𝐛1, 𝐛2, 𝐛𝑗−1, 𝐛𝑗+1, … , 𝐛𝑛
atau jika ‖𝐛1‖ ≤ ‖𝐛𝑗‖ < ‖𝐛2‖, sisipkan
𝐛1, 𝐛𝑗 , 𝐛2, 𝐛𝑗−1, 𝐛𝑗+1, … , 𝐛𝑛
kemudian kembali ke Langkah 1. Tetapi jika ‖𝐛2‖ ≤ ‖𝐛𝑗‖ disisipkan
𝐛1, 𝐛2, 𝐛𝑗 , 𝐛3, 𝐛𝑗−1, 𝐛𝑗+1, … , 𝐛𝑛,
sehingga diperoleh [𝐛1, 𝐛2, 𝐛3] baru yang terurut dengan ukuran terkecil
dalam barisan tersebut. Kemudian hitung 𝐛3∗ dari input 𝐛3
dan [𝐛1∗ , 𝐛2
∗ ] sehingga diperoleh barisan [𝐛1
∗ , 𝐛2∗ , 𝐛3
∗ ] dan lanjut ke Langkah 3.
3. Secara umum, langkah ke-k dari [𝐛1, 𝐛2, … , 𝐛𝑘] dan [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑘∗ ] , cari
vektor 𝐛𝑗 sebagai vektor hasil reduksi [𝐛1, 𝐛2, … , 𝐛𝑘] terhadap
[𝐛𝑘+1, 𝐛𝑘+2, … , 𝐛𝑛] dengan panjang terkecil. Kemudian disisipkan 𝐛𝑗 ke
[𝐛1, 𝐛2, … , 𝐛𝑛]. Jika formasi penyisipan
𝐛𝑗, 𝐛1, 𝐛2, … , 𝐛𝑘 atau 𝐛1, 𝐛𝑗, 𝐛2, … , 𝐛𝑘,
maka kembali ke Langkah 1, dan jika format penyisipan
37
𝐛1, 𝐛2, … , 𝐛𝑖−1, 𝐛𝑗 , 𝐛𝑖, … , 𝐛𝑘
diperoleh [𝐛1, 𝐛2, … , 𝐛𝑖] yang baru, kemudian dari 𝐛𝑖 dan [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑖−1∗ ]
hitung 𝐛𝑖∗ untuk mendapatkan [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑖
∗] baru, maka kembali ke
langkah i. tetapi jika formasi penyisipan
𝐛1, 𝐛2, … , 𝐛𝑘, 𝐛𝑗,
maka diperoleh [𝐛1, 𝐛2, … , 𝐛𝑘+1] baru yang terurut dengan ukuran terkecil
dalam barisan tersebut. Kemudian, hitung 𝐛𝑘+1∗ dari input 𝐛𝑘+1 dan
[𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑘∗ ] sehingga diperoleh barisan [𝐛1
∗ , 𝐛2∗ , … , 𝐛𝑘+1
∗ ] dan lanjut ke
langkah-(k+1).
4. Demikian seterusnya, dan proses berakhir ketika 𝑘 = 𝑛.
Bentuk praktis algoritme greedy SVP LLL diberikan berikut ini.
Algoritme 4.8
Input: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] basis untuk ℒ(ℬ). Output: ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] adalah adalah basis tereduksi LLL untuk ℒ(ℬ)
dan ℬ∗ = [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ] adalah hasil proses ortogonalisasi Gram-Schmidt dari ℬ.
1. 𝐛1∗ ≔ 𝐛1
2. 𝑘 ≔ 1
3. Sementara 𝑘 < 𝑛 lakukan:
4. Inisialisasi [𝐛1, … , 𝐛𝑘] dan [𝐛𝑘+1, … , 𝐛𝑛] 5. Sementara 𝑛 − 𝑘 lakukan:
6. 𝐛𝑦 ≔ 𝐛𝑘+1
7. Untuk 𝑙 = 𝑘, 𝑘 − 1, … ,1 lakukan
8. 𝜇𝑦,𝑙 ≔𝐛𝑦.𝐛𝑙
∗
𝐛𝑙∗.𝐛𝑙
∗
9. 𝐛𝑦 ≔ 𝐛𝑦
− ⌊𝜇𝑦,𝑙⌉𝐛𝑙
10. Hitung ‖𝐛𝑦‖
11. Definisikan 𝑖 ≔ 1
12. Untuk 𝑗 = 2, 3, … , 𝑛 − 𝑘 lakukan:
13. Definisikan 𝐛𝑗
14. Untuk 𝑙 = 𝑘, 𝑘 − 1, …1 lakukan
15. 𝜇𝑗,𝑙 ≔𝐛𝑗.𝐛𝑙
∗
𝐛𝑙∗.𝐛𝑙
∗
16. 𝐛𝑗 ≔ 𝐛𝑗
− ⌊𝜇𝑗,𝑙⌉𝐛𝑙
17. Hitung ‖𝐛𝑗‖
18. Jika ‖𝐛𝑗‖ < ‖𝐛𝑦‖ maka
19. 𝐛𝑦 ≔ 𝐛𝑗
20. ‖𝐛𝑦‖ ≔ ‖𝐛𝑗‖
21. 𝑖 ≔ 𝑗 22. Definisikan [𝐛𝑘+2, … , 𝐛𝑛] 23. Definisikan 𝑚 ≔ 𝑛 − 𝑘 − 1
24. Definisikan 𝑏 ≔ 𝑘 + 1
25. Untuk 𝑧 = 1, 2, … , 𝑘 lakukan
26. Hitung ‖𝐛𝑧‖
27. Jika ‖𝐛𝑦‖ < ‖𝐛𝑧‖ maka
28. 𝑏 ≔ 𝑧 (Posisi vektor 𝐛𝑦 ditukar dengan posisi vektor 𝐛𝑧)
38
29. Break (Stop loop)
30. Jika posisi 𝐛𝑦 ≤ 𝐛𝑘 maka
31. Jika 𝑏 = 1 maka
32. Definisikan 𝑘 ≔ 1
33. 𝐛𝑦, 𝐛1, 𝐛2, … , 𝐛𝑘
34. 𝐛𝑦 ≔ 𝐛1∗
35. Jika tidak, maka
36. 𝐛1, … , 𝐛𝑧−1, 𝐛𝑦, 𝐛𝑧+1, … , 𝐛𝑘
37. Definisikan 𝐛𝑦
38. Untuk 𝑙 = 𝑘, 𝑘 − 1, … ,1
39. 𝜇𝑦,𝑙 ≔𝐛𝑦.𝐛𝑙
∗
𝐛𝑙∗.𝐛𝑙
∗
40. 𝐛𝑦∗ ≔ 𝐛𝑦
∗ − 𝜇𝑦,𝑙𝐛𝑙∗
41. Perbarui 𝐛𝑦∗ , 𝐛𝑧+1
∗ , … , 𝐛𝑘∗
42. Definisikan 𝑘 ≔ 𝑏
43. Break (Stop loop)
44. Perbarui [𝐛1, 𝐛2, … , 𝐛𝑘, 𝐛𝑦 ]
45. Definiskan 𝐛𝑦
46. Untuk 𝑙 = 𝑘, 𝑘 − 1, … ,1 lakukan
47. 𝜇𝑦,𝑙 ≔𝐛𝑦.𝐛𝑙
∗
𝐛𝑙∗.𝐛𝑙
∗
48. 𝐛𝑦∗ ≔ 𝐛𝑦
∗ − 𝜇𝑦,𝑙𝐛𝑙∗
49. Perbarui 𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑦∗
50. Perbarui 𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗
51. 𝑘 ≔ 𝑘 + 1
52. Perbarui [𝐛1, … , 𝐛𝑘, 𝐛𝑘+1, … , 𝐛𝑛] 53. return(ℬ = [𝐛1, 𝐛2, … , 𝐛𝑛] dan ℬ
∗ = [𝐛1∗ , 𝐛2
∗ , … , 𝐛𝑛∗ ]).
Analisis Algoritme Greedy SVP LLL
Analisis di sini adalah menghitung banyaknya operasi aritmetik dalam
algoritme greedy SVP LLL yang telah dikonstruksi. Algoritme dimulai dengan
inisialisasi vektor pertama sebagai vektor ortogonal, dilanjutkan dengan operasi
assignment pada nilai 𝑘 ≔ 1. Kemudian, dilakukan inisialisasi pada 2 variabel
untuk membagi vektor kolom yang ada di dalam matriks atas nilai assignment 𝑘.
Proses inisialisasi pada Langkah 4 ini dimaksudkan untuk membandingkan satu
persatu vektor yang ada di dalam 2 variabel. Kemudian, masuk dalam looping
“while” yang akan diulangi sebanyak 𝑛 − 𝑘, dengan nilai 𝑛 adalah dimensi
matriks input.
Selanjutnya dalam algoritme akan dihitung banyaknya operasi yang terlibat
dalam proses reduksi ukuran. Banyaknya operasi yang ada pada Langkah 6 hingga
Langkah 9 (proses reduksi ukuran) yaitu sebagai berikut:
1) Sebuah operasi assignment sebagai statemen awal untuk vektor ke-y yang
ingin di reduksi.
2) Ada sebuah blok statemen “for” yang diulang sebanyak k
a) Ada 2 operasi assignment
39
b) Ada 3 operasi perkalian vektor, 1 operasi pengurangan, 1 operasi
pembagian, dan 1 operasi pembulatan ke bilangan bulat terdekat.
Setelah blok ini, dihitung norm dari vektor yang telah direduksi yang
diberikan dalam variabel tertentu, kemudian diinisialisasi suatu variabel 𝑖. Pada Langkah 12 hingga Langkah 21, blok statemen di awali dengan
looping reduksi ukuran vektor-vektor ke-𝑘 + 2 hingga vektor ke-𝑛. Banyaknya
operasi yang terlibat dalam blok ini adalah:
1) Blok statemen proses reduksi ukuran yang menggunakan operasi yang sama
dengan Langkah 6 hingga Langkah 9.
2) Menghitung setiap norm yang telah direduksi dengan vektor-vektor yang
telah dinisialisasi dalam variabel 𝑘. Kemudian ada percabangan pada blok
ini, dimana ada 1 tanda perbandingan untuk membandingkan panjang vektor
yang yang telah direduksi pada Langkah 6, untuk mendapatkan yang vektor
dengan norm terpendek. Dalam blok ini ada 3 inisialisasi, masing-masing
untuk penukaran posisi vektor dengan norm terpendek.
Pada Langkah 22 hingga Langkah 24, operasi assignment untuk vektor ke
𝑘 + 2 hingga 𝑛, dan variabel 𝑚 dan 𝑏 yang menyatakan posisi vektor. Selanjutnya,
pada Langkah 25 hingga Langkah 29 merupakan looping untuk menghitung norm
dari vektor posisi pertama hingga ke vektor ke-𝑘 dan didalamnya ada statemen “if”
dimana vektor terpendek hasil reduksi pada Langkah 12 dibandingkan panjangnya.
Jika kondisi ini terpenuhi, maka posisi vektor akan ditukar di posisi vektor ke-𝑘.
Dalam Langkah 30 hingga Langkah 44, terdapat blok percabangan yang
memungkinkan penyisipan vektor dengan norm terpendek untuk menempati
posisi pertama, atau posisi vektor yang disisipkan antara vektor pertama dan
vektor ke- 𝑘 . Jika kondisi ini terpenuhi, barisan yang mengandung vektor
terpendek dihitung nilai vektor ortogonalnya dengan menggunakan ortogonalisasi
Gram-Schmidt.
Pada Langkah 45 hingga Langkah 48, di awali dengan inisialisasi vektor
yang tidak masuk dalam kondisi percabangan, untuk dihitung nilai vektor
ortogonalnya. Rincian banyaknya operasi dalam blok statemen “for” ini adalah:
1) 2 operasi inisialisasi
2) 1 operasi pembagian, 3 operasi perkalian vektor, dan 1 operasi pengurangan.
Langkah terakhir adalah penambahan indeks 𝑘 kemudian kembali ke
Langkah 3. Proses akan berakhir jika nilai 𝑘 ≔ 𝑛.
Pengujian Eksperimental dan Perbandingan Running Time masing-masing
Algoritme dengan Output Sama
Selain dihitung banyaknya operasi aritmetik dalam algoritme, juga
dilakukan pengujian terhadap algoritme LLL, algoritme LLL penyisipan dalam,
dan algoritme greedy SVP LLL. Pengujian dilakukan dengan cara memasukkan
matriks latis bilangan bulat berukuran 𝑛 × 𝑛 (𝑛 = 10, 20,… 80) dengan 𝛿 =3
4.
Output dari program adalah matriks bilangan bulat tereduksi LLL berukuran 𝑛 ×𝑛 dan matriks hasil ortogonalisasi Gram-Schimdt. Pengujian ini bertujuan untuk
melihat mana diantara ketiga program yang lebih cepat waktu eksekusinya. Untuk
memperoleh running time, waktu eksekusi setiap ukuran matriks diambil
sebanyak 5 kali, kemudian diambil nilai rata-ratanya.
40
Berdasarkan Tabel 1 di atas, dengan meningkatnya ukuran matriks, running
time eksekusi ketiga program mengalami peningkatan. Hal ini terjadi karena
semakin besar ukuran input matriks maka ukuran iterasi proses yang dilakukan
pun akan semakin besar. Untuk algoritme greedy SVP LLL yang merupakan
varian baru yang telah dibuat, dalam percobaan yang telah dilakukan untuk
ukuran matriks yang berbeda, mengungguli tiga algoritme lain dalam segi
kecepatan. Untuk melihat fenomena ini, berikut diberikan grafik perbandingan
running time versus ukuran matriks 𝑛 × 𝑛 sebagai masukkannya.
Ukuran Matriks (n x n)
10 x 10 20 x 20 30 x 30 40 x 40 50 x 50 60 x 60 70 x 70 80 x 80
Ru
nn
ing
Tim
e (d
etik)
0
500
1000
1500
2000
2500
LLL
DI
Greedy SVP LLL
Gambar 6 Perbandingan running time (detik) versus ukuran matriks 𝑛 × 𝑛
Tabel 1 Ukuran matriks 𝑛 × 𝑛 versus running time (detik) dengan 𝛿 = 3/4
Jenis
Algoritme
Ukuran matriks
10 x 10 20 x 20 30 x 30 40 x 40 50 x 50 60 x 60 70 x 70 80 x 80
LLL 0.059 1.207 8.234 13.104 33.712 83.034 93.544 388.099
Penyisipan
Dalam 0.072 1.763 13.625 64.659 136.485 401.216 651.058 2126.497
Greedy
SVP LLL 0.044 1.061 7.132 7.226 17.634 34.617 83.408 139.385