Minggu, 06 Maret 2022

Metodologi Penelitian Ilmu Komputer

 Minat Bidang Penelitian Pemanfaatan IoT dibidang Pertanian


Internet saat ini telah berkembang pesat di dunia, salah satunya di Indonesia. Pada tahun 2021 pengguna internet di Indonesia telah mencapai 202,6 juta, terjadi peningkatan 15% dari tahun sebelumnya. Perkembangan internet yang pesat dapat dimanfaatkan untuk menerapkan Internet of Things (IoT) dalam menunjang perekonomian masyarakat, contohnya seperti Pertanian.

Gagasan penerapan IoT pada sektor pertanian sudah seharusnya untuk direalisasikan karena membawa dampak yang sangat positif untuk para petani. Dalam penerapannya, IoT dapat membantu petani melalui sensor-sensor untuk memantau perkembangan kesuburan tanah, pengendalian hama atau penyakit. Selain itu, petani dapat melakukan penajdwalan penyiraman, pemupukan dan penyemprotan pestisida otomatis dengan memanfaatkan IoT. Diharapkan jika penerapan IoT pada bidang pertanian dapat meningkatkan produktivitas hasil pertanian yang dapat meningkatkan perekonomian masyarakat.


Rabu, 05 Januari 2022

IMPLEMENTASI ALGORITMA BRANCH AND BOUND

Pengertian Algoritma Branch and Bound



Algoritma B&B (Branch and Bound) adalah salah satu algoritma yang digunakan untuk pencarian jalur. Contoh yang dibahas kali ini adalah mengenai pencarian jalur yang melalui semua titik dengan biaya terendah.
Algoritma ini memiliki 2 prinsip, yaitu:

  • Algoritma ini akan melakukan perhitungan secara rekursif, akan memecah masalah kedalam masalah-masalah kecil, sambil tetap menghitung nilai terendah / terbaik. Proses ini dinamakan branching
  • Jika branching diterapkan secara sendirian, maka hasilnya akan tetap mencari setiap kemungkinan yang ada. Untuk meningkatkan performa, algoritma ini akan melakukan pencatatan biaya minimum sebagai bound dalam setiap perhitungan, sehingga untuk calon hasil jawaban yang diperkirakan akan melebihi bound akan dibuang karena tidak mungkin akan mencapai nilai terbaik
Teknik Algoritma Branch and Bound
Algoritma Branch and Bound dapat menggunakan beberapa titik, yaitu :

1. Least Cost Branch and Bound
Teknik ini akan menghitung cost dari setiap node yang ada. Node yang memilki cost terkecil diantara node lain, dianggap memiliki kemungkinan paling besar menuju solusi.
Tahap :
node yang memiliki cost terendah akan dibuka dahulu.
pada sebuah node berlaku b ≤ c(x) ≤ u.
Keterangan : 
b adalah batas bawah.
c(x) adalah cost dari node x.
u adalah batas atas.

2. FIFO Branch and Bound
Merupakan salah satu teknik dari  Algoritma Branch and Bound yang menggunakan bantuan dari Queue untuk proses perhitungan secara First In First Out.
Tahap : 
E-node dimasukkan ke dalam queue, kemudian membuat branch (cabang) selanjutnya.
D-node tiidak dapat digunakan untuk membuat branch selanjutnya.
Mendapatkan partial space tree (pohon) yang dicari

3. LIFO Branch and Bound
Merupakan salah satu teknik dari  Algoritma Branch and Bound yang menggunakan bantuan dari stack untuk proses perhitungan secara Last In First Out.
Tahap :
E-node dimasukkan ke dalam stack, kemudian membuat branch (cabang) selanjutnya.
D-node tiidak dapat digunakan untuk membuat branch selanjutnya.
Mendapatkan partial space tree (pohon) yang dicari
Implementasi Algoritma Branch and Bound pada permasalahan Knapsack Problem

Implementasi Algoritma Branch and Bound pada permasalahan Knapsack Problem


Dengan kapasitas sebesar 16, carilah keuntungan terbesar dari setiap barang tersebut.

Rumus : awal + (P/W)max* daya angkut yang tersisa
maka  : 0+6*16  =96

Diperoleh  96 batas awal atau cost dari simpul awal.

Bangkitkan simpul 1, simpul 2, simpul 3, dan simpul 4. Hitung cost dari tiap simpul tersebut.

2. 12 + 5*(16-2) = 82

3. 15 + 6*(16-5) = 81

4. 50 + 6*(16-10)=86

5. 10 + 6*(16-5)=76

setelah simpul dibangkitkan, ditemukan bahwa simpul 4 memiliki cost tertinggi, sehingga simpul 4 akan diperluas untuk membuat simpul 6, 7, 8. Kemudian hitung cost dari simpul 6, 7, 8.

6. (50+12) + 3*(16-10-2) = 74

7. (50+15) + 6*(16-10-5) = 71

8. (50+10) + 6*(16-10-5) = 66


Nama     : Ilham Baihaqi
NPM      : 20312152
Kelas     : IF20E

Website Teknokrat :

Rabu, 22 Desember 2021

Implementasi Algoritma Divide and Conquer pada Sorting dan Searching

Implementasi Algoritma Divide and Conquer pada Sorting dan Searching

Nama    : Ilham Baihaqi

NPM    : 20312152

Kelas    : IF 20 E

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


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


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

Divide and Conquer Pada Sorting

1. Selection Sort


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


2. Insertion Sort

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


3. Quick Sort

    Algoritma Quick Sort adalah salah satu algoritma pengurutan data, algoritma ini menggunakan teknik pemecahan data menjadi beberapa bagian atau partisi, sehingga algoritma ini disebut juga dengan nama partition exchange sort. 
Algoritma ini mengambil salah satu elemen pada suatu data secara acak (tengah) yang disebut dengan pivot lalu menyimpan semua elemen yang lebih kecil disebelah kiri pivot dan elemen yang lebih besar pada sebelah kanan pivot. Langkah tersebut dilakukan secara berulang sampai semua elemen menjadi terurut.





Divide and Conquer Pada Searching


1. Binary Search


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


    

2. Linear Search


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


Jangan Lupa Kunjungi Link Di Bawah :


Rabu, 15 Desember 2021

SEJARAH, DEFINISI DAN CARA KERJA ALGORITMA DIVIDE AND CONQUER

 Nama    : Ilham Baihaqi

Kelas    : IF 20 E

NPM    : 20312152


Sejarah, Definisi dan Cara Kerja Algoritma Divide and Conquer


A. Sejarah Algoritma Divide and Conqueror

Algoritma Divide And Conquer ditemukan oleh seorang ilmuwan Rusia bernama Anatolii Alexeevich Karatsuba pada tahun 1960. Pada mulanya, Anatolii menemukan algoritma yang lebih cepat untuk mengalihkan dua buah bilangan bulat yang besar dengan kompleksitas O(nlog 3).

B. Definisi Algoritma Divide and Conqueror

  Algoritma Divide and Conquer merupakan algoritma yang sangat populer di dunia Ilmu Komputer. Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah permasalahan yang terlalu besar menjadi beberapa bagian kecil sehingga lebih mudah untuk diselesaikan. Langkah-langkah umum algoritma Divide and Conquer :

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

Conquer : Memecahkan ( menyelesaikan ) masing-masing upa-masalah ( secara rekursif ).

Combine : Menggabungkan solusi masing-masing upa-masalah sehingga  membentuk solusi masalah semula.

    Objek masalah yang di bagi adalah masukan (input) atau instances yang berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif. Sesuai dengan karakteristik pembagian dan pemecahan masalah tersebut, maka algoritma ini dapat berjalan baik pada persoalan yang bertipe rekursif (perulangan dengan memanggil dirinya sendiri). Dengan demikian, algoritma ini dapat diimplementasikan dengan cara iteratif ( perulangan biasa ), karena pada prinsipnya iteratif hampir sama dengan rekursif. Salah satu penggunaan algoritma ini yang paling populer adalah dalam hal pengolahan data yang bertipe array ( elemen larik ). Mengapa ? Karena pengolahan array pada umumnya selalu menggunakan prinsip rekursif atau iteratif. Penggunaan secara spesifik adalah untuk mencari nilai minimal dan maksimal serta untuk mengurutkan elemen array. Dalam hal pengurutan ini ada empat macam algoritma pengurutan yang berdasar pada algoritma Divide and Conquer, yaitu merge sort, insert sort, quick sort, dan selection sort. Merge sort dan Quick sort mempunyai kompleksitas algoritma O(n ²log n). Hal ini lebih baik jika dibandingkan dengan pengurutan biasa dengan menggunakan algoritma brute force.

C. Cara Kerja Algoritma Divide and Conqueror

Divide : artinya membagi masalah menjadi beberapa sub-masalah yang memiliki masalah dengan permasalahan semula namun lebih kecil dari sebelumnya atau sama dengan sebelumnya.

Conquer : artinya menyelesaikan masing-masing sub-masalah secara rekursif.

Combine : artinya menggabungkan solusi dari masing-masing sub-masalah sehingga dapat menyelesaikan masalah utama atau masalah awal.

Algoritma ini akan membagi n input menjadi k subset input yang berbeda (1<k≤n). Dari k subset input yang berbeda akan terdapat k submasalah, setiak submasalah mempunyai solusi masing-masing. Sehingga akan diperoleh subsolusi k. Kemudian, dari subsolusi k akan diperoleh solusi yang optimal atau solusi yang diharapkan.

Jika submasalah masih dianggap terlalu besar, maka metode Divide and Conquer dapat digunakan lagi secara berulang-ulang

Sabtu, 09 Oktober 2021

Praktikum Desain Web - Javascript

Nama    : Ilham Baihaqi

NPM    : 20312152

Kelas    : IF20E


1. The <script> tag / Demo1

<!doctype html> 

<html>


<head>

<meta charset="utf-8">

<title>Untitled Document</title>

</head>


<body>

<h2>JavaScript in Body</h2>

<p id="demo"></p>

<script>

document.getElementById("demo").innerHTML = "My First Javascript";

</script>

</body>

</html>

Hasil :

2. Window Alert

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>

<p>Click the button to display an alert box.</p>
<button onClick="myFunction()">Try it</button>
<script>
function myFunction(){
alert ("Hello! I am an alert box!");
}
</script>
</body>
</html>
Hasil :


3.  JS-Alert

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script>
function validateForm() {
var x = documnet.forms["myForm"]["fname"].value;
if (x == ""){
alert ("Name must be filled out");
return false;
}
}
</script>
</head>

<body>
<h1> Js Alert</h1>
<form name="myForm" action="/action_page_post.php" onSubmit="return validateForm()" method="post">
Name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
</body>
</html>

Hasil :


4. Validate Input

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<h2>JavaScript Can Validate Input</h2>

<p>Please input a number between 1 and 10:</p>
<input id="numb">
<button type="button" onClick="myFunction()">Submit</button>

<p id="demo"></p>
<script>
function myFunction() {
var x, text;
// Get tge value of the input field with id=numb"
x = document.getElementById("numb").value;
//If x is Not a Number or less than one or greater than 10
if (isNaN(x) || x < 1 || x > 10){
text = "Input not valid";
} else {
text = "Input OK";
}
document.getElementById("demo").innerHTML = text;
}
</script>
</body>
</html>

Hasil :


5. Scroll Top

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style>
#myBtn {
display: none;
position: fixed;
bottom: 20px;
right: 30px;
z-index: 99;
border: none;
outline: none;
background-color: red;
color: white;
cursor: pointer;
padding: 15px;
border-radius: 10px;
}
#myBtn:hover {
background-color: #555;
}
</style>
</head>

<body>
<button onClick="topFunction()" id="myBtn" title="Go to top">Top</button>

<div style="background-color:black;color:white;padding:30px">Scroll Down</div>
<div style="background-color:lightgrey;padding:30px 30px 2500px">This example demonstrates how to create a "scroll to top" button that becomes visible when the user starts to scroll the page.</div>

<script>
// when the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
document.getElementById("myBtn").style.display = "block";
} else {
document.getElementById("myBtn").style.display = "none";
}
}

// When the user clicks on the button, scroll to the top of the document
function topFunction() {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
}
</script>
</body>
</html>

Hasil :









Praktikum Desain Web - CSS

                                     Latihan CSS Mata Kuliah Praktikum Desain Web

1. Membuat Alert button 

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Untitled Document</title>

<style>

.btn{

border: none;

color: white;

padding: 14px 28px;

cursor :pointer;

}

.sukses {background-color: #4caf50;} /*Green*/

.sukses:hover{background-color: #46a049;}

.info{background-color: #2196f3;} /*Blue*/

.info:hover {background: #0b7dda;}

.peringatan{background-color: #ff9800;} /*Orange*/

.peringatan:hover{background: #e68a00;}

.bahaya{background-color: #f44336;} /*Red*/

.bahaya:hover{background: #da190b;}

.semula{background-color: #e7e7e7; color: black;} /*Gray*/

.semula:hover{background:#ddd;}

</style>

</head>

<body>

<h1> Tombol Peringatan</h1>

<button class="btn sukses">Sukses</button>

<button class="btn info">Info</button>

<button class="btn peringatan">Peringatan</button>

<button class="btn bahaya">Bahaya</button>

<button class="btn Semula">Semula</button>

</body>

</html>


Hasil :


2. Membuat Tabel Form

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Untitled Document</title>

<style>

input[type=text],select{width: 100%;

padding: 12px 20px;

margin: 8px 0;

display: inline-block;

border: 1px solid #ccc;

border-radius: 4px;

box-sizing: border-box;}

input[type=submit]{width: 100%;

background-color: #4caf50;

color:white;

padding: 14 px 20px;

margin: 8px 0;

border: none;

border-radius: 4px;

cursor: pointer;

}

input[type=submit]:hover{background-color:#45a049;}

div{

border-radius: 5px;

background-color: #f2f2f2;

padding: 20px;

}

</style>

</head>

<body>

<h3>Using CSS to style an HTML Form</h3>

<div>

<form action="/action_page.php">

<label for="fname">First Name</label>

<input type="text" id="fname" name="firstname" placeholder="Your name...">

<label for="lname">Last Name</label>

<input type="text" id="lname" name="lastname" placeholder="Your last name...">

   

<label for="Country"></label>

<select id="country" name="country">

<option value="Australia">Australia</option>

<option value="Russia Federation">Russia Federation</option>

<option value="USA">USA</option>

</select>

<input type="submit"value="submit">

</form>

</div>

</body>

</html>


Hasil :



3. Membuat Table Navigation Bar

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Untitled Document</title>

<style>

body {font-family: arial;}

ul {list-style-type: none;

margin: 0;

padding: 0;

overflow: hidden;

background-color: #333;

   }

li {

float: left;

   }

li a 

   {

display: block;

color: white;

text-align: center;

padding: 14px 16px;

text-decoration: none;

   }

li a:hover:not(.active){background-color: #111}

.active {background-color: #4caf50;}

</style>

</head>

<body>


<ul>

<li><a href="home">Home</a></li>

<li><a href="#news">News</a></li>

<li><a href="contact">Contact</a></li>

<li style="float:right"><a class="active" href="#about">About</a></li>

</ul>

Hasil :


4. Membuat Dropdown Menu

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Dropdown</title>

    <style>

     body { font-family:arial; }

    ul {

      list-style-type: none;

      margin: 0;

      padding: 0;

      overflow: hidden;

      background-color: #333;

    }

    li {

      float: left;

    }

    li a, .dropbtn {

      display: inline-block;

      color: white;

      text-align: center;

      padding: 14px 16px;

      text-decoration: none;

    }

    li a:hover, .dropdown:hover, .dropbtn {

      background-color: red;

    }

    li.dropdown {

      display: inline-block;

    }

    .dropdown-content {

      display: none;

      position: absolute;

      background-color: #f9f9f9;

      min-width: 160px;

      box-shadow: 0px 8px 16px 0px rgba(0,0,0,0,2);

      z-index: 1;

    }

    .dropdown-content a {

      color: black;

      padding: 12px 16px;

      text-decoration: none;

      display: block;

      text-align: left;

    }

    .dropdown-content a:hover {background-color: #f1f1f1}

    .dropdown:hover .dropdown-content {

      display: block;

}

    </style>

</head>

<body>


    <ul>

        <li><a href="#home">Home</a></li>

        <li><a href="#news">News</a></li>

        <li class="dropdown">

            <a href="javascript:void(0)" class="dropbtn">Dropdown</a>

            <div class="dropdown-content">

                <a href="#">Link 1</a>

                <a href="#">Link 2</a>

                <a href="#">Link 3</a>

            </div>

        </li>

    </ul>

    

    <h3>Dropdown menu inside a navigation bar</h3>

    <p>hover over the dropdown link to see the dropdown menu </p>

</body>

</html>

Hasil :