• Tidak ada hasil yang ditemukan

Implementasi Algoritma Branch And Bound Pada Penentuan Menu Makanan Penderita Asam Urat

N/A
N/A
Protected

Academic year: 2016

Membagikan "Implementasi Algoritma Branch And Bound Pada Penentuan Menu Makanan Penderita Asam Urat"

Copied!
106
0
0

Teks penuh

(1)

PENENTUAN MENU MAKANAN PENDERITA ASAM URAT

SKRIPSI

HEDI HERMAWAN HARAHAP

111421069

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

(2)

SKRIPSI

Diajukan untuk melengkapi tugas akhir dan memenuhi syarat memperoleh ijazah

Sarjana Ilmu Komputer

HEDI HERMAWAN HARAHAP

111421069

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul

: IMPLEMENTASI ALGORITMA BRANCH AND

BOUND PADA PENENTUAN MENU MAKANAN

PENDERITA ASAM URAT

Kategori

: SKRIPSI

Nama

: HEDI HERMAWAN HARAHAP

Nomor Induk Mahasiswa : 111421069

Program Studi

: EKSTENSI S1 ILMU KOMPUTER

Departemen

: ILMU KOMPUTER

Fakultas

: ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, 11 Februari 2014

Komisi Pembimbing

:

Pembimbing 2

Pembimbing 1

Dian Rachmawati, S.Si, M.Kom

Dr. Poltak Sihombing, M.Kom

NIP. 19830723 200912 2 004

NIP. 19620317 199103 1 001

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer

Ketua,

(4)

PERNYATAAN

IMPLEMENTASI ALGORITMA BRANCH AND BOUND PADA

PENENTUAN MENU MAKANAN PENDERITA ASAM URAT

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa

kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 11 Februari 2014

(5)

PENGHARGAAN

Alhamdulillah, puji dan syukur ke hadirat Allah SWT, yang hanya dengan rahmat

dan izin-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk

memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas

Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Ucapan terima kasih penulis sampaikan kepada:

1.

Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu

Komputer dan selaku Dosen Pembimbing I yang telah memberikan bimbingan,

saran dan masukan kepada penulis dalam pengerjaan skripsi ini.

2.

Ibu Dian Rachmawati, S.Si, M.Kom selaku Dosen Pembimbing II yang telah

memberikan bimbingan, saran dan masukan kepada penulis dalam pengerjaan

skripsi ini.

3.

Bapak M. Andri Budiman, ST, M.Comp.Sc, MEM selaku Dosen Pembanding I

yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.

4.

Bapak Handrizal, S.Si, M.Comp.Sc selaku Dosen Pembanding II yang telah

memberikan kritik dan saran dalam penyempurnaan skripsi ini.

5.

Seluruh tenaga pengajar dan pegawai di Program Studi S1 Ilmu Komputer

Fasilkom-TI USU.

6.

Ayahanda Drs. Hamron Harahap, Ibunda Fadillah Hasibuan S.Pd serta kakanda

Fadli Hardiansyah Harahap S.Kep, Ns yang selalu memberikan kasih sayang dan

dukungannya kepada penulis.

7.

Keluarga besar Ekstensi Ilmu Komputer, khususnya semua teman dan sahabat

angkatan 2011 yang tidak dapat disebutkan satu persatu, terima kasih atas ide,

saran, dan kerja samanya selama ini.

Semoga Allah SWT melimpahkan berkah kepada semua pihak yang telah

memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan

skripsi ini. Akhirnya, semoga skripsi ini bermanfaat bagi pribadi, keluarga, masyarakat,

organisasi dan negara.

(6)

ABSTRAK

Penyakit asam urat erat kaitannya dengan pola makan. Jika pola makan tidak dirubah,

kadar asam urat dalam darah yang berlebihan akan menimbulkan penumpukan kristal

asam urat. Apabila kristal terbentuk dalam cairan sendi, maka akan terjadi penyakit gout

(asam urat). Kendala yang dialami oleh penderita asam urat dalam menentukan pola

makan adalah ketidakmampuan dalam menentukan jumlah kalori yang dibutuhkannya

dan pengetahuan yang kurang tentang pola makan sehat dan konsumsi gizi yang tepat

pada penderita asam urat. Penentuan menu makanan dapat diselesaikan dengan

menggunakan algoritma

Branch and Bound

dengan memperhatikan Tabel Angka

Kecukupan Gizi dan Daftar Komposisi Bahan Makanan (DKBM). Proses optimasi

dilakukan terhadap menu makanan pilihan

user

yang telah dihitung jumlah karbohidrat,

lemak, protein, dan kadar purin yang cocok sesuai dengan kalori perhari. Implementasi

sistem menggunakan bahasa pemrograman PHP dan MySQL. Hasil penelitian adalah

algoritma

Branch and Bound

telah berhasil diterapkan untuk mengoptimasi masalah

sehingga mampu menghasilkan daftar makanan yang dapat dikonsumsi oleh

user

.

(7)

THE IMPLEMENTATION OF ALGORITHMS BRANCH AND BOUND IN

THE DETERMINATION OF CUISINES PATIENTS OF URIC ACID

ABSTRACT

Uric acid disease closely related to diet. If the diet is not changed, the levels of uric acid

in the blood will cause excessive buildup of uric acid crystals. When the crystals form

in joints of liquid, then there will be disease gout (uric acid). The constraints

experienced by sufferers of gout in determining the pattern of eating is the inability to

determine the number of calories that it needs and knowledge that is less about the

pattern of healthy eating and proper nutrition consumption in people with gout.

Determination of food menu can be solved using Branch and Bound algorithm with

attention to the Tabel Angka Kecukupan Gizi and Daftar Komposisi Bahan Makanan

(DKBM). The optimization process done to the food menu selection the user who has

calculated the amount of carbohydrates, fats, proteins, and the levels of matching

according to purin calories per day. System implementation using the programming

language PHP and MySQL. Research results are Bound and Branch algorithms have

been successfully applied to optimizing problems so it is able to generate a list of foods

that can be consumed by the user.

(8)

DAFTAR ISI

Hal.

Persetujuan

ii

Pernyataan

iii

Penghargaan

iv

Abstrak

v

Abstract

vi

Daftar Isi

vii

Daftar Tabel

ix

Daftar Gambar

x

Daftar Lampiran

xi

Bab 1 Pendahuluan

1.1 Latar Belakang

1

1.2 Rumusan Masalah

2

1.3 Batasan Masalah

2

1.4 Tujuan Penelitian

3

1.5 Manfaat Penelitian

3

1.6 Metodologi Penelitian

3

1.7 Sistematika Penulisan

4

Bab 2 Landasan Teori

2.1 Algoritma

5

2.2 Algoritma Pencarian

6

2.3 Pohon

6

2.4 Pencarian Buta

7

2.4.1 Algoritma

Depth First Search

(DFS)

7

2.4.2 Algoritma

Breadth-First Search

(BFS)

9

2.4.3 Algoritma

Best First Search

10

2.5 Algoritma Optimasi

11

2.5.1 Algoritma

Branch and Bound

12

2.6

Knapsack Problem

13

2.6.1

Knapsack

dengan Algoritma

Greedy

14

2.6.2

Knapsack

dengan Algoritma

Branch and Bound

15

2.7 Asam Urat

17

2.7.1 Defenisi Asam Urat

17

2.7.2 Gejala Penyebab Asam Urat

18

2.7.3 Tahapan Asam Urat

19

(9)

Bab 3 Analisis dan Perancangan Sistem

3.1 Analisis Sistem

21

3.1.1 Analisis Masalah

21

3.1.2 Analisis Kebutuhan

22

3.1.2.1 Kebutuhan Fungsional

22

3.1.2.2 Kebutuhan Nonfungsional

22

3.2 Perancangan Algoritma

Branch and Bound

23

3.2.1 Pengkategorian Kalori Berdasarkan Umur

23

3.2.2 Penggolongan Asam Urat Berdasarkan Kadar Purin

24

3.2.3 Perhitungan Nilai Kalori Setiap Bahan Makanan

25

3.2.4 Proses Perhitungan Algoritma

Branch And Bound

27

3.2.5 Pseudocode

30

3.3

Flowchart

Sistem Secara Umum

32

3.4

Data Flow Diagram

(DFD)

33

3.4.1 Diagram Konteks

34

3.4.2

Data Flow Diagram

Level 1

35

3.4.3

Data Flow Diagram

Level 2 Proses 4

37

3.5 Kamus Data

38

3.6 Perancangan Antarmuka (Interface)

43

3.6.1 Daftar

43

3.6.2 Data Lengkap

43

3.6.3 Edit Data

44

3.6.4 Pemilihan Menu Makanan

45

3.6.5 Hasil Pemilihan

46

3.6.6 Daftar Menu Makanan

47

Bab 4 Implementasi Program

4.1 Spesifikasi Perangkat

48

4.1.1 Perangkat Keras

48

4.1.2 Perangkat Lunak

49

4.2 Penggunaan Program

49

4.2.1 Halaman Utama

49

4.2.1.1 Halaman Login

50

4.2.1.2 Halaman Daftar

51

4.2.1.3 Halaman Edit Data

52

4.2.2 Halaman Pemilihan Makanan

52

4.2.3 Halaman Administrator

53

4.3 Pengujian Sistem

53

Bab 5 Kesimpulan dan Saran

5.1 Kesimpulan

56

5.2 Saran

56

(10)

DAFTAR TABEL

Hal.

Tabel 2.1

Algoritma

greedy

pada

knapsack

15

Tabel 2.2

Contoh persoalan

knapsack

15

Tabel 3.1

Kalori Berdasarkan Umur

24

Tabel 3.2

Keterangan Kalori, Protein dan pi/bi

28

Tabel 3.3

Kode Program Untuk Membuat Algoritma Branch and Bound

30

Tabel 3.4

Tabel Admin

38

Tabel 3.5

Tabel akg_men

39

Tabel 3.6

Tabel bb_temp

39

Tabel 3.7

Tabel dkbm

39

Tabel 3.8

Tabel jenisk

40

Tabel 3.9

Tabel modul

40

Tabel 3.10

Tabel pasien

41

Tabel 3.11

Tabel kelompok

41

Tabel 3.12

Tabel umur

41

Tabel 3.13

Tabel food_temp

42

Tabel 3.14

Tabel golongan

42

(11)

DAFTAR GAMBAR

Hal.

Gambar 2.1

Struktur Data dari Pohon

7

Gambar 2.2

Tahapan pembentukan pohon DFS

7

Gambar 2.3

Matriks bidak

8

Gambar 2.4

Pohon ruang status yang terbentuk pencarian DFS

8

Gambar 2.5

Persoalan menyusun mainan yang terdiri atas 3 buah blok

9

Gambar 2.6

Pohon ruang status yang dibentuk selama pencarian solusi

dengan metode BFS

10

Gambar 2.7

Langkah-langkah yang dilakukan oleh algoritma

Best First Search

11

Gambar 2.8

Ilustrasi permasalahan

knapsack

pada penyakit asam urat

14

Gambar 2.9

Pohon ruang status yang terbentuk penyelesaian

knapsack

16

Gambar 3.1

Diagram Ishikawa Masalah Penelitian

21

Gambar 3.2

Pohon ruang status penyelesaian

knapsack

dengan algoritma

branch and bound

29

Gambar 3.3

Flowchart Sistem Secara Umum

33

Gambar 3.4

Diagram Konteks

34

Gambar 3.5

DFD Level 1

35

Gambar 3.6

DFD Level 2 Proses 4 Branch and Bound

37

Gambar 3.7

Halaman Daftar

43

Gambar 3.8

Halaman Data Lengkap

44

Gambar 3.9

Halaman Edit Data

45

Gambar 3.10

Halaman Pemilihan Menu Makanan

46

Gambar 3.11

Halaman Hasil Pemilihan Menu Makanan

46

Gambar 3.12

Halaman Daftar Menu Makanan

47

Gambar 4.1

Halaman Utama

49

Gambar 4.2

Halaman Login

50

Gambar 4.3

Halaman Informasi Login Kembali

50

Gambar 4.4

Halaman Daftar

51

Gambar 4.5

Halaman Data User

51

Gambar 4.6

Halaman Edit Data

52

Gambar 4.7

Halaman Pemilihan Menu Makanan

52

Gambar 4.8

Halaman Data Makanan Administrator

53

Gambar 4.9

Halaman Daftar User Baru

53

Gambar 4.10

Halaman Profil User

54

Gambar 4.11

Halaman Halaman Pemilihan Menu Makanan

54

Gambar 4.12

Halaman Keterangan Makanan

55

(12)

DAFTAR LAMPIRAN

Hal.

A.

Listing

Program

A-1

B. Daftar Kandugan Bahan Makanan (DKBM) Tahun 2005

B-1

C. Tabel Angka Kecukupan Gizi 2004 bagi Orang Indonesia

C-1

D. Daftar Makanan Yang Harus Dipantang Dan Diperbolehkan

Bagi Penderita Asam Urat

D-1

E. Ukuran Rumah Tangga (URT)

E-1

(13)

ABSTRAK

Penyakit asam urat erat kaitannya dengan pola makan. Jika pola makan tidak dirubah,

kadar asam urat dalam darah yang berlebihan akan menimbulkan penumpukan kristal

asam urat. Apabila kristal terbentuk dalam cairan sendi, maka akan terjadi penyakit gout

(asam urat). Kendala yang dialami oleh penderita asam urat dalam menentukan pola

makan adalah ketidakmampuan dalam menentukan jumlah kalori yang dibutuhkannya

dan pengetahuan yang kurang tentang pola makan sehat dan konsumsi gizi yang tepat

pada penderita asam urat. Penentuan menu makanan dapat diselesaikan dengan

menggunakan algoritma

Branch and Bound

dengan memperhatikan Tabel Angka

Kecukupan Gizi dan Daftar Komposisi Bahan Makanan (DKBM). Proses optimasi

dilakukan terhadap menu makanan pilihan

user

yang telah dihitung jumlah karbohidrat,

lemak, protein, dan kadar purin yang cocok sesuai dengan kalori perhari. Implementasi

sistem menggunakan bahasa pemrograman PHP dan MySQL. Hasil penelitian adalah

algoritma

Branch and Bound

telah berhasil diterapkan untuk mengoptimasi masalah

sehingga mampu menghasilkan daftar makanan yang dapat dikonsumsi oleh

user

.

(14)

THE IMPLEMENTATION OF ALGORITHMS BRANCH AND BOUND IN

THE DETERMINATION OF CUISINES PATIENTS OF URIC ACID

ABSTRACT

Uric acid disease closely related to diet. If the diet is not changed, the levels of uric acid

in the blood will cause excessive buildup of uric acid crystals. When the crystals form

in joints of liquid, then there will be disease gout (uric acid). The constraints

experienced by sufferers of gout in determining the pattern of eating is the inability to

determine the number of calories that it needs and knowledge that is less about the

pattern of healthy eating and proper nutrition consumption in people with gout.

Determination of food menu can be solved using Branch and Bound algorithm with

attention to the Tabel Angka Kecukupan Gizi and Daftar Komposisi Bahan Makanan

(DKBM). The optimization process done to the food menu selection the user who has

calculated the amount of carbohydrates, fats, proteins, and the levels of matching

according to purin calories per day. System implementation using the programming

language PHP and MySQL. Research results are Bound and Branch algorithms have

been successfully applied to optimizing problems so it is able to generate a list of foods

that can be consumed by the user.

(15)

PENDAHULUAN

1.1. Latar Belakang

Asam urat sudah dikenal sejak 2.000 tahun yang lalu dan menjadi salah satu penyakit

tertua yang dikenal manusia. Dulu, penyakit ini juga disebut "penyakit para raja" karena

penyakit ini diasosiasikan dengan kebiasaan mengonsumsi makanan dan minuman yang

enak-enak. Penyakit asam urat erat kaitannya dengan pola makan. Salah satu cara

penyembuhan tentu dengan mengontrol asupan makanan. Jika pola makan tidak

dirubah, kadar asam urat dalam darah yang berlebihan akan menimbulkan penumpukan

kristal asam urat. Apabila kristal terbentuk dalam cairan sendi, maka akan terjadi

penyakit gout (asam urat).

Berdasarkan jurnal penelitian

Best Practice & Research Clinical Rheumatology

pada tahun 2010, terhadap 4683 orang dewasa menunjukkan bahwa angka prevalensi

gout dan hiperurisemia di Indonesia pada pria adalah masing-masing 1,7 dan 24,3%.

Dimana rasio perbandingan laki-laki dan perempuan adalah 34:1 untuk gout, dan 2:1

untuk hiperurisemia. [1]

Menurut data yang diperoleh dari Rumah Sakit Nasional Cipto Mangunkusumo

(RSCM), Jakarta, penderita penyakit gout dari tahun ketahun semakin meningkat dan

terjadi kecenderungan diderita pada usia yang semakin muda. Hal ini tebukti dengan

hasil rekam medik RSCM pada tahun 1993-1995 mengalami kenaikan yaitu pada tahun

1993 tercatat 18 kasus, pria 13 kasus dan wanita 5 kasus (1 kasus umur 2 - 25 tahun, 12

kasus umur 30-50 tahun, dan 5 kasus umur > 65 tahun). Pada tahun 1995 jumlah kasus

yang tercatat adalah 46 kasus, 37 pria dan 9 wanita ( 2 kasus umur 2-25 tahun, 40 kasus

umur 30-50 tahun dan 4 kasus umur > 65 tahun ). Jadi prevalensi kejadian gout lebih

banyak terjadi antara umur 30-50 tahun. [21]

Oleh sebab itulah, penulis tertarik untuk membuat penelitian ini yang

(16)

purin tanpa mengurangi asupan gizi seimbang. Masalah tersebut akan diselesaikan

dengan menggunakan Algoritma

branch and bound

dengan memperhatikan Tabel

Angka Kecukupan Gizi Tahun 2004 [2] dan Daftar Komposisi Bahan Makanan

(DKBM).[3]

1.2. Rumusan Masalah

Masalah yang akan diselesaikan pada penelitian ini adalah :

1. Bagaimana mengoptimalkan menu makanan penderita asam urat yang sesuai

dengan Angka Kecukupan Gizi tanpa menimbulkan kambuhnya asam urat.

2. Bagaimana menerapkan algoritma

branch and bound

untuk mengoptimalkan

menu makanan penderita asam urat

1.3. Batasan Masalah

Batasan masalah yang dapat diambil dari latar belakang di atas adalah :

1. Pengguna dari aplikasi ini adalah penderita asam urat.

2. Sumber asam urat berasal dari buku Bebas Penyakit Asam Urat Tanpa Obat,

sedangkan Tabel Angka Kecukupan Gizi bagi Orang Indonesia dan Daftar

Komposisi Bahan Makanan (DKBM) berasal dari Departemen Kesehatan RI.

3. Penelitian tidak membahas hubungan antara jumlah kalori dan jumlah purin pada

setiap bahan makanan.

4. Masalah yang akan diselesaikan adalah pengoptimalan menu makanan penderita

semua golongan asam urat dengan memperhatikan keluaran dari aplikasi berupa

daftar menu makanan dan daftar kandungan bahan makanan.

5. Keluaran dari aplikasi ini berupa daftar menu makanan berdasarkan tingkat purin

per makanan dan kalori yang dibutuhkan.

6. Masukan dari pengguna berupa jenis kelamin, golongan asam urat, umur, berat

badan, dan menu makanan yang dinginkan.

7. Pembahasan hanya dibatasi pada analisa dan perancangan aplikasi dengan

menggunakan bahasa pemrograman PHP,

Database Management System

MySql,

(17)

1.4. Tujuan Penelitian

Tujuan dari penelitian ini adalah menciptakan sebuah aplikasi menu makanan berbasis

web

bagi penderita semua jenis asam urat.

1.5. Manfaat Penelitian

Penelitian ini diharapkan dapat bermanfaat bagi penderita asam urat untuk menentukan

menu makanan serta memberi gambaran bahwa optimisasi dapat digunakan pada

masalah kesehatan khususnya penyakit asam urat.

1.6. Metodologi Penilitian

Metode penelitian yang akan dilakukan dalam penyelesaian skripsi ini adalah :

1. Studi Literatur

Tahap ini dilakukan dengan mempelajari referensi bahan literatur, mengumpulkan

informasi yang berkaitan algoritma

branch and bound

,

knapsack

, dan asam urat.

2. Analisis dan Perancangan Sistem

Merancang solusi dalam bentuk aplikasi menggunakan model struktur analisis

fungsional, non fungsional /

flowchart

,

Data Flow Diagram

(

DFD

), dan kamus data.

3. Implementasi

Tahap ini dilakukan dengan mengimplementasikan model dan skema pada tahap

perancangan. Model dan skema diterapkan kedalam bahasa pemrograman PHP

yang dipadukan dengan penggunaan CSS. Di tahap ini akan dihasilkan aplikasi

web

penentuan menu makanan penderita asam urat.

4. Pengujian

Pengujian difokuskan pada pengoptimalan menu makanan tanpa menimbulkan

asam urat pada aplikasi yang digunakan.

5. Dokumentasi

Dokumentasi dihasilkan dengan membuat skripsi sebagai laporan dari hasil

(18)

1.7. Sistematika Penulisan

Sistematika penulisan dari skripsi ini terbagi dari lima bab, yaitu sebagai berikut :

BAB 1 : PENDAHULUAN

Bab ini akan menjelaskan mengenai latar belakang pemilihan judul, perumusan

masalah, pembatasan masalah, tujuan penelitian, manfaat penelitian, metodologi, dan

sistematika penulisan.

BAB 2 : LANDASAN TEORI

Bab ini akan membahas teori-teori yang berkaitan dengan algoritma, pohon, algoritma

Breadth-First Search, Depth First Search, Best First Search, dan Branch and Bound.

Serta algoritma G

reedy

, asam urat, dan informasi tambahan yang berhubungan dengan

skripsi ini.

BAB 3 : ANALISIS DAN PERANCANGAN SISTEM

Bab ini terdiri dari merancang solusi dalam bentuk aplikasi menggunakan model

struktur analisis fungsional, non fungsional /

flowchart

,

Data Flow Diagram

(

DFD

),

dan kamus data.

BAB 4 : IMPLEMENTASI PROGRAM

Bab ini membahas tentang cara kerja dari hasil implementasi berupa aplikasi dan

mengulas analisis hasil pengujian terhadap implementasi algoritma

Branch and Bound

pada penentuan menu makanan penderita asam urat, apakah menemukan kesalahan atau

tidak.

BAB 5 : KESIMPULAN DAN SARAN

Bab terakhir ini akan memuat kesimpulan isi dari keseluruhan uraian bab-bab

sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat

(19)

t

Asal kata algoritma berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja far

Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi

a

lgorism.

Al-Khuwarizmi menulis buku yang berjudul

Kitab Al Jabar Wal-Muqabala

yang artinya Buku pemugaran dan pengurangan (

The book of restoration and

reduction

). Dari judul buku itu kita juga memperoleh akar kata Aljabar (

Algebra

).

Perubahan kata dari

algorism

menjadi

algorithm

muncul karena kata

algorism

sering dikelirukan dengan

arithmetic

, sehingga akhiran

sm

berubah menjadi

thm.

Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa, maka lambat

laun kata

algorithm

berangsur-angsur dipakai sebagai metode perhitungan (komputasi)

secara umum, sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia, kata

algorithm

diserap menjadi algoritma

.

[10]

Terdapat beberapa definisi mengenai kata algoritma, antara lain :

1. Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang

disusun secara sistematis. [11]

2. Algoritma adalah

urutan logis pengambilan suatu

keputusan dalam

memecahkan suatu permasalahan. [12]

(20)

t

!

carian

Pencarian adalah suatu proses mencari solusi dari suatu permasalahan melalui

sekumpulan kemungkinan ruang keadaan (

state space

). Ruang keadaan merupakan

suatu ruang yang berisi semua keadaan yang mungkin. Dalam ilmu komputer, sebuah

algoritma pencarian dijelaskan secara luas merupakan algoritma yang menerima

masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah

tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi.

Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang

pencarian. Algortima pencarian

brute-force

atau pencarian

uninformed

menggunakan

metode yang sederhana dan sangat intuitif pada ruang pencarian, sedangkan algoritma

pencarian

informed

menggunakan heuristik untuk menerapkan pengetahuan tentang

struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang

dipakai dalam pencarian [14]

2.3.

Pohon

Untuk menghindari kemungkinan adanya proses pelacakan suatu

node

secara berulang,

maka digunakan struktur pohon. Sebuah pohon adalah suatu struktur data yang

digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang

terhubung. Pohon adalah graf tak-berarah terhubung yang tidak mengandung sirkuit.

Dengan setiap kemungkinan solusi dianggap sebagai sebuah simpul dan akar dari

pohon, banyak algoritma yang menggunakan ruang solusi berupa pohon ini karena lebih

memudahkan dalam penelusuran solusi yang ada berupa simpul-simpul pohon. [4]

(21)

"# $

bar 2.1 Struktur Data dari Pohon.

[5]

2.4.

Pencarian Buta

2.4.1.

Algoritma Depth First Search (DFS)

Pencarian dengan metode ini dilakukan dari

node

awal secara mendalam hingga yang

paling akhir (

dead-end

) atau sampai ditemukan. Dengan kata lain, simpul cabang atau

anak yang terlebih dahulu dikunjungi.[15] Sebagai ilustrasinya dapat dilihat pada

gambar 2.2.

0

1 4

0

2 3 5 6

1 4

0

2 3 5

1 4

0

2 3

2 1

0

3 0

1

2 1

0

(i) (ii) (iii) (iv) (v) (vi) (vii)

Gambar 2.2 Tahapan pembentukan pohon DFS

[7]

Algoritma DFS:

1. Masukkan simpul akar ke dalam antrian Q (

Queue

) . Jika simpul akar = simpul

solusi, maka Stop.

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

3. Ambil simpul v dari kepala (

head

) antrian. Jika kedalaman simpul v sama

dengan batas kedalaman maksimum, kembali ke langkah 2.

(22)

anak dari simpul v adalah simpul tujuan, berarti solusi telah ditemukan, kalau

tidak, kembali lagi ke langkah 2.

Penerapan DFS dapat dilihat pada contoh dibawah ini.

Sebuah bidak (pion) bergerak di dalam sebuah matriks pada gambar 2.3. Bidak dapat

memasuki elemen matriks mana saja pada baris paling atas. Dari elemen matriks yang

berisi 0, bidak dapat bergerak ke bawah jika elemen matriks di bawahnya berisi 0; atau

berpindah horizontal (kiri atau kanan) jika elemen di bawahnya berisi 1. Bila bidak

berada pada elemen yang berisi 1, ia tidak dapat bergerak kemanapun. Tujuan

permainan ini adalah mencapai elemen matriks yang mengandung 0 pada baris paling

bawah.

%& '

bar 2.3 Matriks bidak

Operator yang digunakan:

DOWN pindahkan bidak satu posisi ke bawah

LEFT

pindahkan bidak satu posisi ke kiri

RIGHT pindahkan bidak satu posisi ke kanan

S6 (3,2) S5 (3,1) S4 (2,1) S7 (2,3) S10 (2,2) S11 (2,1) S12 (3,1) S13 (2,3) S15 (2,4) S16 (3,4) S17 (4,4) S3 (2,2) S9 (1,2) S14 (1,4) S2 (1,2) S8 (1,3) S18 (1,4) S1 (1,1) S0 S6 (3,2) S5 (3,1) S4 (2,1) S7 (2,3) S10 (2,4) S11 (3,4) S12 (4,4) S3 (2,2) S9 (1,4) S2 (1,2) S8 (1,3) S13 (1,4) S1 (1,1) S0

Gambar 2.4 Pohon ruang status yang terbentuk pencarian DFS

[7]

1

2

3

4

1

1

0

0

0

2

0

0

1

0

3

0

1

0

0

(23)

2.4.2.

Algoritma Breadth-First Search (BFS)

Algoritma BFS adalah salah satu teknik pencarian sederhana, dimana pada teknik ini

simpul akar dikembangkan terlebih dahulu, kemudian simpul-simpul yang dihasilkan

dari simpul akar dikembangkan lagi selanjutnya. Umumnya, semua simpul-simpul pada

kedalaman

d

di pohon pencarian dikembangkan sebelum pada kedalaman

d+1

. Dalam

suatu pencarian, dimungkinkan adanya suatu pengulangan pengembangan simpul yang

tidak terbatas.

Hal ini akan menghabiskan waktu pencarian dengan mengembangkan

node

yang

sudah diperluas sebelumnya. Seperti keadaan pengulangan {(1,2,3), (1), (2,3), (1,2,3),

(1), (2), (3), (1,2,3),

}. Pencarian untuk permasalahan ini adalah tanpa batas. Untuk

menghindarinya, dapat dipotong sebagian dari keadaan yang yang diulangi menuju ke

suatu ukuran terbatas. Ada tiga metode yang berhubungan dengan keadaan yang

diulangi, salah satunya adalah tidak kembali pada keadaan yang baru saja didatangi,

fungsi perluasan simpul harus mencegah terjadinya pengembangan simpul dari simpul

orang-tua (

parent

) yang sama [6]. Seperti contoh berikut dimana sebuah mainan yang

terdiri atas 3 buah blok (dinomori 1, 2, dan 3) pada gambar 2.5.

1

2

3

3

2

1

(a) Susunan awal

(b) Susunan akhir

() *

bar 2.5 Persoalan menyusun mainan yang terdiri atas 3 buah blok

[7]

Prinsip dari persoalan menyusun mainan ini adalah :

1. Operator perpindahan : Pindahkan X ke Y , yang berarti memindahkan objek

X ke atas objek yang lain.

2. Pada setiap saat, hanya satu buah blok yang boleh dipindahkan.

3. Operator tidak digunakan untuk membangkitkan status yang sama lebih dari

satu kali.

(24)

1

2 3

3 2

1 3

1

2 2

1 3

1 3 2

1 2 3

3 2

1 2

3

1 3

1 2

1 2 3

3 2 1

S0:

S1: S2:

S3:

S4: S5: S6: S7:

S8:

S9: S10:

+, -

bar 2.6 Pohon ruang status yang dibentuk

selama pencarian solusi dengan metode BFS

[7]

Dengan mengikuti lintasan dari simpul akar (S0) ke simpul solusi (S10), kita

memperoleh konfigurasi urutan perpindahan blok dari status awal sampai ke status

akhir. Dengan metode BFS, jika terdapat sebuah solusi, maka BFS menjamin dapat

menemukannya, dan jika terdapat lebih dari satu buah solusi, BFS selalu menemukan

solusi pertama pada aras pohon yang paling rendah.[7]

2.4.3.

Algoritma Best First Search

(25)

terpilih dan selanjutnya akan dibangkitkan semua suksesor B. Demikian seterusnya

sampai ditemukan

node

tujuan.

./ 0

bar 2.7 Langkah-langkah yang dilakukan

oleh algoritma

Best First Search

[16]

2.5.

Algoritma Optimasi

Algoritma Optimasi (

Optimization Algorithms)

didefenisikan sebagai suatu cabang

ilmu dari matematika terapan dan analisa numerik yang membahas optimasi dengan

kriteria yang bersifat tunggal, ganda atau bahkan mungkin konflik. Kriteria

diekspresikan sebagai himpunan fungsi matematika F = {f1, f2,

, fn} yang disebut

fungsi-fungsi objektif. [17]

Algoitma optimasi sedikit berbeda dengan algoritma pencarian (

search

algorithmn

). Pada algoritma pencarian terdapat suatu kriteria tertentu yang menyatakan

apakah elemen

xi

merupakan solusi atau bukan. Sebaliknya pada algoritma optimasi

mungkin tidak terdapat kriteria tersebut, melainkan hanya fungsi-fungsi objektif yang

Step 2

Step 1

Step 3

A

(26)

bisa dikatakan sebagai generalisasi dari algoritma pencarian atau dengan kata lain,

algoritma pencarian adalah kasus khusus dari algoritma optimasi. Salah satu algoritma

optimasi adalah algoritma

Branch and Bound

.

2.5.1. Algoritma Branch and Bound

Sebagaimana pada algortima

backtracking

, algoritma

Branch & Bound (B&B)

juga

merupakan metode pencarian di dalam ruang solusi secara sistematis. Ruang Solusi

diorganisasikan ke dalam pohon ruang status. Pembentukan pohon ruang status pada

algoritma B&B berbeda dengan pembentukan pohon pada algoritma runutbalik. Bila

pada algoritma

backtracking

ruang solusi dibangun secara

Depth-First Search

(DFS),

maka pada algoritma B&B ruang solusi dibangun dengan skema

Breadth-First Search

(BFS).

Pada algoritma B&B, pencarian ke simpul solusi dapat dipercepat dengan

memilih simpul hidup berdasarkan nilai ongkos (

cost

). Setiap simpul hidup

diasosiasikan dengan sebuah ongkos yang menyatakan nilai batas (

bound

). Simpul

hidup yang menjadi simpul-E ialah simpul yang mempunyai nilai batas terkecil (strategi

pencarian berdasarkan biaya terkecil (

least cost search

)). Pada prakteknya, nilai batas

untuk setiap simpul umumnya berupa taksiran atau perkiraan. Fungsi heuristik untuk

menghitung taksiran nilai tersebut dinyatakan secara umum sebagai :

c(

i

) = f(

i

) + g(

i

)

yang dalam hal ini,

c (i) = ongkos untuk simpul i

f (i) = ongkos mencapai simpul i dari akar

g (i) = ongkos mencapai simpul tujuan dari simpul akar i (perkiraan)

Nilai c digunakan untuk mengurutkan pencarian. Simpul berikutnya yang dipilih

untuk diekspansi adalah simpul yang memiliki c minimum (simpul-E). Strategi memilih

simpul-E seperti ini dinamakan strategi pencarian berdasarkan biaya terkecil (

least cost

search

).

Prinsip dari algoritma

Branch and Bound

ini adalah :

(27)

2. Jika

Q

kosong, tidak ada solusi . Stop.

3.

Jika

Q

tidak kosong, pilih dari antrian

Q

simpul

I

yang mempunyai (

i

) paling

kecil. Jika terdapat beberapa simpul

i

yang memenuhi, pilih satu secara

sembarang.

4. Jika simpul

i

adalah simpul solusi, berarti solusi sudah ditemukan, stop. Jika

simpul

i

bukan simpul solusi, maka bangkitkan semua anak-anaknya. Jika

i

tidak

mempunyai anak, kembali ke langkah 2.

5. Untuk setiap anak

j

dari simpul

i

, hitung (

j

), dan masukkan semua anak-anak

tersebut ke dalam antrian

Q

.

6. Kembali ke langkah 2. [4]

1232

Knapsack problem

Knapsack problem

adalah suatu masalah bagaimana cara menentukan pemilihan barang

dari sekumpulan barang dimana setiap barang tersebut mempunyai berat dan profit

masing-masing, sehingga dari pemilihan barang tersebut didapatkan profit yang

maksimum. Dalam penelitian ini, barang digantikan dengan makanan yang diterapkan

dalam penentuan menu makanan penderita asam urat. Dimana setiap jenis makanan

mempunyai tingkat purin, kalori, protein, dan lemak masing-masing. Sehingga dari

penentuan makanan tersebut didapatkan asupan gizi yang maksimum.

(28)

45 6

bar 2.8 Ilustrasi permasalahan

knapsack

pada penyakit asam urat

2.6.1. Knapsack dengan Algoritma Greedy

Algoritma

Greedy

merupakan metode yang paling populer untuk memecahkan

persoalan optimasi. Salah satu masalah yang sering di selesaikan adalah masalah

knapsack

. Terdapat beberapa strategi

greedy

yang heuristik yang dapat digunakan untuk

memilih objek yang akan dimasukkan ke dalam

knapsack

, antara lain :

1. Greedy by profit.

a. Pada setiap langkah, pilih objek yang mempunyai keuntungan terbesar.

b. Mencoba memaksimumkan keuntungan dengan memilih objek yang paling

menguntungkan terlebih dahulu.

2. Greedy by weight.

a. Pada setiap langkah, pilih objek yang mempunyai berat teringan.

(29)

3.

Greedy by density

.

a. Pada setiap langkah,

knapsack

diisi dengan objek yang mempunyai p

i

/w

i

terbesar.

b. Mencoba memaksimumkan keuntungan dengan memilih objek yang

mempunyai keuntungan per unit berat terbesar.

4. Pemilihan objek berdasarkan salah satu dari ketiga strategi di atas

tidak menjamin

akan memberikan solusi optimal. [19]

Penerapan algoritma

Greedy

pada persoalan

knapsack

seperti contoh berikut.

Kapasitas

knapsack

K = 100.

789 :;<=>? ;@ABC

t

D8

greedy

pada

knapsack

[19]

Properti Objek

Greedy by

Solusi

Optimal

i

wi

pi

pi/wi

profit

weight

density

1

100

40

0,4

1

0

0

0

2

50

35

0,7

0

0

1

1

3

45

18

0,4

0

1

0

1

4

20

4

0,2

0

1

1

0

5

10

10

1,0

0

1

1

0

6

5

2

0,4

0

1

1

1

Total bobot

100

80

85

100

Total keuntungan

40

34

51

55

2.6.2. Knapsack dengan Algoritma Branch and Bound

Penerapan algoritma B&B pada persoalan

knapsack

seperti contoh berikut.

Tabel 2.2 Contoh persoalan

knapsack

Item Berat (kg) Profit Profit / Berat

1

4

$40

10

2

7

$42

6

3

5

$25

5

4

3

$12

4

Kapasitas maksimum = 10 kg

(30)

membutuhkan solusi optimal. Berbeda halnya dengan metode

lower bounding

yang

berfungsi untuk menentukan suatu batas bawah dari fungsi objektif.

Untuk menghitung batas atas (

upper bound

), digunakan :

Penyelesaian :

Untuk mencari ub maksimum (keuntungan terbesar) adalah :

Ambil 0 item, masukkan

density maximum

dari item

ub = 0 + (10

0)*(10) = $100

Setelah kita mengambil 1 item, kita hitung

upper bound

dengan :

Semua bagian item 1 (4, $40) + sebagian dari item 2 (7, $42)

ub = $40 + (10-4)*6 = $76

Jika tidak mengambil item 1, maka :

ub = (10

0) * ($6) = $60

w = 0, v = 0 ub = 100

w = 4, v = 40

ub = 76 w = 0, v = 0

ub = 60

w = 11 w = 4, v = 40

ub = 70

w = 9, v = 65

ub = 69 w = 4, v = 40

ub = 64

w = 12 w = 9, v = 65

ub = 65

EF G

bar 2.9 Pohon ruang status yang terbentuk penyelesaian

knapsack

[18]

ub = p + (B

b)*(pi+1/bi+1)

1

3

2

4

with

1

without 1

with

2

without

2

with

3

with

4

without

4

5

6

7

8

inferior to

node 8

tidak

feasible

tidak

feasible

inferior to

node 8

optimal solution

without

3

lebih rendah dari

node

8

lebih rendah dari

node

8

4

4

2

without

1

dimana :

p = Profit

(31)

HIJI K LMNOPM Q

2.7.1. Defenisi Asam Urat

Asam urat adalah asam yang berbentuk kristal-kristal yang merupakan hasil akhir dari

metabolisme purin (bentuk turunan nukleoprotein), yaitu salah satu komponen asam

nukleat yang terdapat pada inti sel-sel tubuh. Secara alamiah, purin terdapat dalam

tubuh kita dan dijumpai pada semua makanan dari sel hidup, yakni makanan dari

tanaman (sayur, buah, kacang-kacangan) atau pun hewan (daging, jeroan, ikan sarden).

Setiap orang memiliki asam urat di dalam tubuh karena pada setiap metabolisme

normal dihasilkan asam urat. Asam urat yang terdapat di dalam tubuh kita tentu saja

kadarnya tidak boleh berlebihan. Asam urat dapat berlebih disebabkan adanya pemicu,

yaitu makanan dan senyawa lain yang banyak mengandung purin. Sesungguhnya tubuh

menyediakan 85 persen senyawa purin untuk kebutuhan setiap hari, hal ini berarti

bahwa kebutuhan purin dari makanan hanya sekitar 15 persen. Asam urat pun dapat

merupakan faktor risiko untuk penyakit jantung koroner.

Kristal asam urat akan merusak

endotel

(lapisan bagian dalam pembuluh darah)

koroner Karena itu siapapun yang kadar asam uratnya tinggi harus berupaya untuk

menurunkannya agar kerusakan tidak merembet ke organ-organ tubuh yang lain. Dalam

kaitan ini juga terdapat fungsi ginjal yang bekerja mengatur kestabilan kadar asam urat

dalam tubuh dimana sebagian sisa asam urat dibuang melalui air seni.

Apabila asam urat berlebihan dan ginjal tidak mampu lagi mengatur

kestabilannya, maka asam urat in akan menumpuk pada jaringan dan sendi, dan pada

saat kadar asam urat tinggi maka akan timbul rasa nyeri yang hebat terutama pada

daerah persendian.

Pada umumnya para pria lebih banyak terserang asam urat, dan kadar asam urat

kaum pria cenderung meningkat sejalan dengan peningkatan usia. Sedangkan Pada

wanita pada wanita presentasinya lebih kecil, dimana peningkatannya juga cenderung

berjalan sejak dimulainya masa

menopause.

(32)

Jadi selama seorang wanita mempunyai hormon

estrogen

, maka pembuangan

asam uratnya ikut terkontrol. Ketika sudah tidak mempunyai

estrogen

, seperti saat

menopause

, barulah wanita tersebut dapat terkena asam urat. Kalau peningkatan asam

urat ini melewati ambang batas yang bisa ditolerir, maka persoalan akan timbul pertama

adalah pada ginjal, sendi, dan saluran kemih. Kadar asam urat normal pada pria dan

wanita berbeda. Kadar asam urat normal pada pria berkisar 3,5

7 mg/dl dan pada

wanita 2,6

6 mg/dl. Kadar asam urat diatas normal disebut hiperurisemia.[8]

2.7.2. Gejala / Penyebab Asam Urat

Sekitar 90% penyakit asam urat disebabkan oleh ketidakmampuan ginjal membuang

asam urat secara tuntas dari tubuh melalui air seni. Sebagian kecil lainnya karena tubuh

memproduksi asam urat secara berlebihan. Penyakit asam urat kebanyakan diderita oleh

pria di atas 40 tahun dan wanita yang telah menopause. Penderita asam urat biasanya

juga memiliki keluhan lain seperti tekanan darah tinggi, penyakit ginjal, diabetes dan

aterosklerosis. Separuh dari penderita asam urat adalah orang yang kegemukan. Apabila

dibiarkan, maka penyakit asam urat bisa berkembang menjadi batu ginjal dan

mengakibatkan gagal ginjal.

Gejala khas dari asam urat atau artritis gout adalah serangan akut biasanya

bersifat monoartikular (menyerang satu sendi saja), disertai dengan gejala

pembengkakan, kemerahan, nyeri hebat, panas dan gangguan gerak dari sendi yang

terserang yang terjadi mendadak (akut) yang mencapai puncaknya kurang dari 24 jam.

(33)

2.7.3. Tahapan Asam Urat

Tahap pertama disebut tahap gout artritis akut

Pada tahap ini penderita akan mengalami serangan artritis yang khas dan serangan

tersebut akan menghilang tanpa pengobatan dalam waktu 5

7 hari. Karena cepat

menghilang, maka sering penderita menduga kakinya keseleo atau kena infeksi

sehingga tidak menduga terkena penyakit gout dan tidak melakukan pemeriksaan

lanjutan.

Tahap kedua disebut sebagai tahap artritis gout intermiten akut.

Setelah melewati masa gout interkritikal selama bertahun-tahun tanpa gejala,

penderita akan memasuki tahap ini, ditandai dengan serangan artritis yang khas.

Selanjutnya penderita akan sering mendapat serangan (kambuh) yang jarak antara

serangan yang satu dan serangan berikutnya makin lama makin rapat dan lama,

serangan makin lama makin panjang, serta jumlah sendi yang terserang makin

banyak.

Tahap ketiga disebut sebagai tahap gout artritis kronik bertofus.

Tahap ini terjadi bila penderita telah menderita sakit selama 10 tahun atau lebih.

Pada tahap ini akan terjadi benjolan-benjolan di sekitar sendi yang sering meradang

yang disebut sebagai tofus. Tofus ini berupa benjolan keras yang berisi serbuk

seperti kapur yang merupakan deposit dari kristal monosodium urat. Tofus ini akan

mengakibatkan kerusakan pada sendi dan tulang di sekitarnya. Tofus pada kaki bila

ukurannya besar dan banyak akan mengakibatkan penderita tidak dapat

menggunakan sepatu lagi.

2.7.4. Penggolongan Asam Urat

Penyakit asam urat digolongkan menjadi penyakit gout primer dan penyakit gout

sekunder :

Penyakit gout primer

(34)

Penyakit gout sekunder

Penyakit ini disebabkan antara lain karena meningkatnya produksi asam urat karena

nutrisi, yaitu mengonsumsi makanan dengan kadar purin yang tinggi.

Pada keadaan normal, kandungan asam urat dalam tubuh adalah :

a. Pria

: 3,7

7 mg/dL

b. Wanita : 2,4

5,7 mg/dL

Penderita asam urat di golongkan berdasarkan kandungan asam urat yaitu :

1. Golongan I

a. Pria

: 7

8,5 mg/dL

b. Wanita : 5,8

7 mg/dL

2. Golongan II

a. Pria

: 8,5

9 mg/dL

b. Wanita : 7

8 mg/dL

3. Golongan III

(35)

ANALISIS DAN PERANCANGAN SISTEM

3.1

Analisis Sistem

Analisis sistem terdiri dari fase-fase berbeda yang mendeskripsikan pengembangan

sistem. Dalam tugas akhir ini, ada dua fase analisis yaitu: analisis masalah, dan analisis

kebutuhan. Analisis masalah bertujuan untuk memahami kelayakan masalah. Analisis

kebutuhan dilakukan untuk menjelaskan fungsi-fungsi yang ditawarkan dan mampu

dikerjakan sistem.

3.1.1

Analisis Masalah

Penentuan menu makanan bagi penderita asam urat merupakan suatu hal yang sulit bagi

penderita asam urat itu sendiri. Hal ini terjadi karena setiap makanan memiliki kadar

purin masing-masing. Masalah penelitian ini secara umum ditunjukkan pada gambar

3.1, yaitu diagram Ishikawa (

fishbone/cause and effect diagram

).

Gambar 3.1 Diagram Ishikawa Masalah Penelitian

Machine Method

People

penentuan menu makanan penderita asam urat

Material NESCO Muticheck

Menghitung kalori manual

Kesulitan memilih komposisi makanan Buku Asam Urat

Kesulitan menghitung kalori

Menentukan menu makanan manual

[image:35.595.125.523.543.729.2]

Buku Kalori Tabel Daftar Purin

(36)

Berdasarkan gambar 3.1, masalah utama ditunjukkan oleh segi empat paling

kanan (kepala ikan), yaitu penentuan menu makanan. Sedangkan segi empat lainnya

yang dihubungkan oleh sebuah garis ke tulang utama (garis horizontal yang terhubung

ke kepala ikan) adalah kategori masalah. Garis horizontal selanjutnya yang ditunjukkan

oleh tulang-tulang kecil yang diwakili oleh garis panah yang mengarah ke tulang-tulang

kategori masalah adalah sebab dari masalah yang berada pada kepala.

3.1.2

Analisis Kebutuhan

Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan

nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan suatu

sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan

batasan lainnya.

3.1.2.1 Kebutuhan Fungsional

Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang

dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang adalah

sebagai berikut:

a. Sistem mampu menentukan jumlah kalori yang dibutuhkan perhari berdasarkan

data yang telah di input

user

.

b. Sistem mampu menentukan golongan asam urat berdasarkan kadar purin yang

telah di input

user

.

c. Sistem mampu melakukan pemisahan makanan yang dilarang dikonsumsi

dengan tidak dilarang berdasarkan golongan asam urat.

d. Sistem mampu menentukan bahan dan menu makanan yang telah di pilih oleh

user

dengan algoritma

branch and bound

dan disesuaikan dengan waktu makan.

3.1.2.2 Kebutuhan Nonfungsional

(37)

1. Performa

Perangkat lunak yang akan dibangun dapat melaksanakan tugasnya dengan

waktu yang tidak terlalu lama.

2. Efisiensi

Sistem atau perangkat lunak yang akan dibangun harus sesederhana

mungkin agar mudah digunakan oleh pengguna (

user

) dan responsif.

3. Ekonomi

Sistem atau perangkat lunak yang akan dibangun harus dapat bekerja dengan

baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan

perangkat keras maupun perangkat lunak.

4. Informasi

Sistem harus mampu menyediakan informasi tentang data yang akan

digunakan pada sistem.

5. Kontrol

Perangkat lunak yang dibangun akan menampilkan pesan

error

untuk setiap

input yang tidak sesuai.

6. Pelayanan

Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih

kompleks lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut.

3.2

Perancangan Algoritma

Branch and Bound

Pada tahap ini terdapat empat hal penting, yaitu pengkategorian kalori berdasarkan

umur, penggolongan asam urat berdasarkan kadar purin dalam darah, perhitungan nilai

kalori setiap bahan makanan, dan proses perhitungan Algoritma

Branch and Bound

.

3.2.1

Pengkategorian Kalori Berdasarkan Umur

Pengkategorian kalori dibagi berdasarkan jenis kelamin, yaitu laki-laki dan wanita,

(38)
[image:38.595.146.277.146.281.2]

Tabel 3.1 Kalori Berdasarkan Umur

Laki-laki

Umur

Kalori

10-12 th

2050

13-15 th

2400

16-18 th

2600

19-29 th

2550

30-49 th

2350

50-64 th

2250

60+ th

2050

3.2.2

Penggolongan Asam Urat Berdasarkan Kadar Purin

Pada keadaan normal, kandungan asam urat dalam tubuh adalah :

a. Pria

: 3,7

7 mg/dL

b. Wanita : 2,4

5,7 mg/dL

Penderita asam urat di golongkan berdasarkan kandungan asam urat yaitu :

1. Golongan I

a. Pria

: 7

8,5 mg/dL

b. Wanita : 5,8

7 mg/dL

Makanan yang diperbolehkan kurang dari 200 mg purin

2. Golongan II

a. Pria

: 8,5

9 mg/dL

b. Wanita : 7

8 mg/dL

Makanan yang diperbolehkan kurang dari 150 mg purin

3. Golongan III

a. Pria

: > 9 mg/dL

b. Wanita : > 8 mg/dL [2]

Makanan yang diperbolehkan kurang dari 100 mg purin

Wanita

Umur

Kalori

10-12 th

2050

13-15 th

2350

16-18 th

2200

19-29 th

1900

30-49 th

1800

50-64 th

1750

(39)

3.2.3

Perhitungan Nilai Kalori Setiap Bahan Makanan

Untuk menghitung nilai kalori bahan makanan diperlukan beberapa instrumen antara

lain :

1. Nilai kalori makanan

1 gram karbohidrat dapat menghasilkan 4 kalori

1 gram Lemak menghasilkan 9 kalori

1 gram protein menghasilkan 4 kalori

2. Daftar kompoisi bahan makanan (DKBM)

DKBM berupa tabel (lampiran B) yang memuat berbagai jenis makanan beserta

kandungan zat gizinya. Kandungan zat gizi yang terbaca dalam DKBM merupakan

kandungan setiap 100 Gram bahan makanan.

3. Ukuran Rumah Tangga (URT)

URT berupa daftar takaran bahan makanan yang dapat dilihat pada lampiran E.

Cara menghitung nilai kalori setiap bahan makanan dapat di lihat pada contoh makanan

pagi dengan menu berikut :

1 gelas Nasi

1 mangkuk sayur kacang

1 potong Tempe

1 buah jeruk

1 potong daging ayam

1 gelas susu

Hal pertama yang dilakukan adalah menyesuaikan menu makanan dan URT, sehingga

menu makanan menjadi :

1 Gelas Nasi (URT 125 gr)

1 mangkuk sayur kacang (URT 50 gr)

1 potong Tempe (URT 25)

1 buah jeruk (URT 50)

1 potong daging ayam (URT 50)

(40)

Cara Perhitungan :

1 gelas nasi :

(A) Bdd (bahan yg dapat dimakan ) nasi = 100 % (dilihat pada tabel DKBM)

(B) 1 gelas nasi = 125 Gr (dilihat pada tabel tabel URT)

(C) Setiap 100 Gram Nasi mengandung : (dilihat pada tabel tabel DKBM)

(C1) Karbohidrat

: 40,6 gram

(C2) Lemak

: 0,1 Gram

(C3) Protein

: 2,1 Gram

Karbohidrat

100/100

* 125/100

* 40,6

* 4

203

Kalori

(A)

(B)

(C1)

Kalori zat gizi

Lemak

100/100

* 125/100

* 0.1

* 9

1,13

Kalori

(A)

(B)

(C2)

Kalori zat gizi

Protein

100/100

* 125/100

* 2,1

* 4

10,5

Kalori

(A)

(B)

(C3)

Kalori zat gizi

Sehingga total kalori untuk 1 gelas nasi adalah 203 + 1,13 + 10,5 = 214,63 Kalori.

Hal yang sama kita lakukan pada menu makanan berikutnya.

1 Gelas Mangkuk sayur Kacang ( URT= 50 Gr)

Karbohidrat =

75/100 X 50/100 X 7.8 X 4

=

11.7 Kal

Lemak

=

75/100 X 50/100 X 0.3 X 9

=

1.0 Kal

Protein

=

75/100 X 50/100 X 2.7 X 4

=

4.0 kal

--- +

=

16.7 Kal

1 Potong Tempe ( URT= 25 Gr)

Karbohidrat =

100/100 * 25/100 * 9,1* 4

=

9,1 Kal

Lemak

=

100/100 * 25/100 * 7,7 * 9

=

17.33 Kal

Protein

=

100/100 * 25/100 * 14 * 4

=

14 kal

--- +

(41)

1 Potong Daging ayam ( URT= 50 Gr)

Karbohidrat =

58/100 * 50/100 * 0 * 4

=

0 Kal

Lemak

=

58/100 * 50/100 * 25 * 9

=

62.25 Kal

Protein

=

58/100 * 50/100 * 18.2 * 4

=

21.11 kal

--- +

=

83.36 Kal

1 Gelas Susu Sapi ( URT= 200 Gr)

Karbohidrat =

100/100 * 200/100 * 4.3 * 4

=

30.1 Kal

Lemak

=

100/100 * 200/100 * 3.5 * 9

=

63.9 Kal

Protein

=

100/100 * 200/100 * 3.2 * 4

=

25.6 kal

--- +

=

115.1 Kal

1 Buah Jeruk ( URT= 50 Gr)

Karbohidrat =

71/100 * 50/100 * 11,2 * 4

=

15.9 Kal

Lemak

=

71/100 * 50/100 * 0.2 * 9

=

0.64 Kal

Protein

=

71/100 * 50/100 * 0.9 * 4

=

1.29 kal

--- +

=

17,82 Kal

Sehingga jumlah nilai kalori makanan tersebut adalah

= 488,04 Kal.

3.2.4

Proses Perhitungan Algoritma Branch And Bound

Algoritma

Branch & Bound

(B&B) juga merupakan metode pencarian di dalam ruang

solusi secara sistematis. Ruang Solusi diorganisasikan ke dalam pohon ruang status dan

dibangun dengan skema

Breadth-First Search

(BFS). Pada penelitian ini algoritma

B&B digunakan untuk menyelesaikan masalah knapsack 0-1 yang diimplementasikan

pada penentuan menu makanan penderita asam urat.

Pada tahap sebelumnya diperoleh jumlah kalori setiap bahan makanan, sehingga

dapat dijadikan contoh persoalan knapsack 0-1 dimana n = 6. Untuk variabel B sebagai

berat maksimum, dalam persoalan ini adalah kalori dapat kita misalkan sebesar 210

(42)

Tabel 3.2 Keterangan Kalori, Protein dan pi/bi

Bahan Makanan-i

pi

bi

pi/bi

1 potong daging ayam

9.1

83.36

0.109

1 potong tempe

3.5

40.43

0.087

1 mangkok sayur kacang

1.35

16.7

0.081

1 gelas susu sapi

6.4

115.1

0.056

1 buah jeruk

0.45

17.82

0.025

1 gelas nasi

2.63

214.63

0.012

Pada contoh di atas, makanan telah diurut mengecil sesuai dengan pi/bi, dengan

menggunakan algoritma B&B cara mengerjakan adalah :

Menghitung batas atas (

upper bound

) disetiap simpul kemungkinan, dengan

menggunakan :

ub = p + (B

b)*(pi+1/bi+1)

dimana :

p = protein

B = kalori maksimum

b = kalori item

Penyelesaian :

Untuk mencari ub maksimum (protein terbesar) adalah :

Ambil 0 item, masukkan

density maximum

dari item

ub = 0 + (210

0)*( 0.109) = 22,89 gr.

Setelah kita mengambil 1 item, kita hitung

upper bound

di setiap simpul dengan :

Semua bagian item 1 (9.1 , 83.36) + sebagian dari item 2 (3.5, 40.43)

ub = 9.1 + (210 - 83.36)* 0.087= 20,12

Jika tidak mengambil item 1, maka :

ub = (210

0) * (0.087) = 18,27

Selanjutnya mengambil item 2 untuk dihitung

upper bound

seperti pada item 1

(43)
[image:43.842.36.800.94.487.2]

Gambar 3.2 Pohon ruang status penyelesaian

knapsack

dengan algoritma

branch and bound

9.1/0/20.12 0/0/18.27

12.6/123.79/19.5 9.1/83.36/19.4

13.95/140.49/17.84 12.6/123.79/17.43 10.45/100.06/16.6 9.1/83.36/16.19

13.95/140.49/15.69

255.59 238.89 12.6/123.79/14.76 215.7 10.45/100.06/13.2 15.5/198.46/15.78 9.1/83.36/12.3

13.95/140.49/14.78 14.4/158.31/15

12.6/123.79/13.63 13.5/141.61/14.32

10.45/100.06/11.76 10.9/117.88/12

15.5/198.46/15.64 216.28

9.1/83.36/10.62 9.55/101.18/10.86

14.4/158.31/14.4

13.95/140.49/13.95

13.5/141.61/13.5 12.6/123.79/12.6 10.9/117.88/10.9

10.45/100.06/10.45

15.5/198.46/15.64 9.55/101.18/9.55 9.1/83.36/9.1

1 2

3 4

5 6 7 8

9 10 11 12 13 14 15 16

17 18

19 20

21 22

23

24

25 26

27

28

29 30 31

32

33 34 35

(44)

3.2.1

Pseudocode

Pseudocode adalah deskripsi dari algoritma program komputer yang menggunakan

struktur sederhana dari beberapa bahasa pemrograman, tetapi bahasa tersebut hanya

ditujukan agar dapat dipahami manusia. Tujuan penggunaan utama dari pseudocode

adalah untuk memudahkan manusia dalam memahami prinsip-prinsip dari suatu

algoritma ataupun metode. Dari aplikasi sistem yang dibangun, pseudocode mengenai

implementasi algoritma

Branch and Bound

akan di jabarkan seperti pada tabel 3.3

[image:44.595.112.524.330.765.2]

dibawah ini.

Tabel 3.3 Kode Program Untuk Membuat Algoritma

Branch and Bound

No

Kode

1

$t1 = mysql_query("SELECT * FROM bb_temp ORDER BY

density DESC");

2

$n1 = array();

$k1 = array();

$p1 = array();

$f1 = array();

3

while($row = mysql_fetch_array($t1)){

array_push($n1,$row['food']);

array_push($k1,$row['kalori']);

array_push($p1,$row['protein']);

array_push($f1,$row['id_food']);

}

4

function knapSolveFast($w,$v,$i,$aW,&$m) {

global $numcalls;

$numcalls ++;

// echo "Called with i=$i, aW=$aW<br>";

if (isset($m[$i][$aW])) {

return array( $m[$i][$aW], $m['picked'][$i][$aW] );

} else {

if ($i == 0) {

if ($w[$i] <= $aW) {

$m[$i][$aW] = $v[$i];

(45)

} else {

$m[$i][$aW] = 0;

$m['picked'][$i][$aW] = array();

return array(0,array());

}

}

list ($without_i,$without_PI) =

knapSolveFast($w, $v, $i-1, $aW,$m,$pickedItems);

if ($w[$i] > $aW) {

$m[$i][$aW] = $without_i;

$m['picked'][$i][$aW] = array();

return array($without_i,array());

} else {

list ($with_i,$with_PI) = knapSolveFast($w, $v, ($i-1),

($aW - $w[$i]),$m,$pickedItems);

$with_i += $v[$i];

if ($with_i > $without_i) {

$res = $with_i;

$picked = $with_PI;

array_push($picked,$i);

} else {

$res = $without_i;

$picked = $without_PI;

}

$m[$i][$aW] = $res;

$m['picked'][$i][$aW] = $picked;

return array ($res,$picked);

}

}

}

5

$numcalls = 0;

$m = array();

$pickedItems = array();

$kalsql= mysql_query("SELECT kal FROM kalori_temp");

$kal = mysql_fetch_array($kalsql);

(46)

7

foreach($pickedItems as $key) {

$totalVal += $p1[$key];

$totalWt += $k1[$key];

echo"<div class='temp'>

<div class='p1'>".$n1[$key]."</div>

<div class='p2'>";

$takar=mysql_query("SELECT * FROM dkbm WHERE

dkbm.id_food='$f1[$key]'");

$tkr=mysql_fetch_array($takar);

$ukur=$tkr[ukuran];

$gram=$tkr[urt];

echo"$ukur ($gram gram) </div>

<div

class='p3'>".$p1[$key]."</div>

<div

class='p4'>".$k1[$key]."</div></div>";

}

echo "</div></div><br>";

$persen=($totalWt/$klm[kal])*100;

$kali=substr($persen,0,4);

Keterangan

:

1.

Menampilkan seluruh data dari tabel

bb_temp

secara urut berdasarkan

density.

2.

Mendeklarasi variabel menjadi tipe data array.

3.

Mendeklarasi kembali variabel menjadi array berindeks.

4.

Fungsi pemecahan masalah

k

ghijh k

k

dengan

lmh g knhgolpqgor

5.

Mendeklarasi variabel baru dan nilai inisiasinya.

6.

Pemecahan masalah dengan fungsi

knapSolveFast

berdasarkan variabel yang

telah di deklarasikan.

7.

Menampilkan hasil pemecahan masalah berupa Makanan yang dapat Anda Makan.

3.1

Flowchart

Sistem Secara Umum

st

o

w

knh mu

adalah bagan yang mempunyai arus menggambarkan langkah - langkah

penyelesaian suatu masalah. Secara umum penulis menggambarkan tahapan - tahapan

dalam implementasi algoritma

v mhg kn hgo vpqgo

yang digunakan dalam penelitian

(47)
[image:47.595.187.443.76.514.2]

Gambar 3.3

Flowchart

Sistem Secara Umum

3.2

Data Flow Diagram

(DFD)

Pemodelan proses adalah cara formal untuk menggambarkan bagaimana aplikasi

beroperasi. Mengilustrasikan aktivitas-aktivitas yang dilakukan dan bagaimana data

berpindah di antara aktivitas-aktivitas itu. Ada banyak cara untuk mempresentasikan

model proses. Cara yang populer adalah dengan menggunakan

w xy x z{

o

w

w

i

x|} x~

(DFD).

w xyx z {

o

w

w

i

x|} x~

(DFD) adalah alat yang menggambarkan aliran data

melalui sistem dan kerja atau pengolahan yang dilakukan oleh sistem tersebut [20].

DFD dari aplikasi yang dibuat dimulai dari DFD level 0 hingga DFD level 2.

Mulai

-

Identitas Penderita

Nama

Alamat

Jenis Kelamin

Usia

-

Kadar Asam Urat

Data Makanan :

-

Bahan Makanan

-

Tingkat Purin

-

Kandungan gizi

Jenis Makanan yang diinginkan

Berat minimum dan maksimum makanan

Perhitungan Algoritma

Branch and Bound

Selesai

Daftar Menu dan

Kandungan Bahan Makanan

(48)

3.4.1

Diagram Konteks

Aliran data bersumber dari pengguna yang dimasukkan ke dalam sistem, yang

kemudian akan diproses dan menghasilkan output daftar menu makanan.

User

memasukkan informasi data pribadi seperti nama, umur, jenis kelamin, berat badan,

kadar purin serta keterangan lain yang dibutuhkan pada sistem ini.

Gambar 3.4 Diagram Konteks

Penjelasan proses diagram konteks DFD yaitu sebagai berikut:

a. Arus Data

Masukan :

Data

user

Update

data makanan

Keluaran :

Respon

update

data makanan

Daftar menu makanan

Akses

b. Entitas Luar

Nama Entitas : Admin

Keterangan : Merupakan bagian yang mengontrol dan memperbaiki sistem

Masukan :

Username

Password

Sistem Penentuan

Menu Makanan

User

Admin

data

user

menu makanan

hak akses

data hasil

update

hak akses

id_admin

data makanan

0

(49)

Update

data makanan

Keluaran :

Respon

update

data makanan

Nama Entitas :

User

Keterangan : Pengguna yang menggunakan sistem.

Masukan :

Username

Data

user

Keluaran :

Daftar menu makanan

3.4.2

Data Flow Diagram Level 1

Proses yang ada pada DFD Level 0 dipecah lagi menjadi proses-proses yang lebih kecil

[image:49.

Gambar

Tabel Daftar Purin
Tabel 3.1 Kalori Berdasarkan Umur
Gambar 3.2  Pohon ruang status penyelesaian knapsack dengan algoritma branch and bound
Tabel 3.3 Kode Program Untuk Membuat Algoritma Branch and Bound
+7

Referensi

Dokumen terkait