Archive by Author

Algoritma MCSS (Maximum Contiguous Subsequence Sum)

18 May

Algoritma MCSS (Maximum Contiguous Subsequence Sum) adalah algoritma yang digunakan untuk mencari hasil penjumlahan terbesar dari subsequence (bagian sebuah urutan angka). Jika urutan tersebut berisi bilangan negatif seluruhnya maka MCSS adalah 0.

Masukan yang dibutuhkan untuk algoritma tersebut adalah sembarang bilangan real dengan syarat memiliki tipe data yang sama sehingga dapat dioperasikan dan dibandingkan.

Apakah keluaran yang dihasilkan algoritma MCSS dan tuliskan syarat khusus
yang pasti dipenuhi (jika ada) untuk keluarannya?

Keluaran yang dihasilkan adalah sebuah bilangan yang merupakan jumlah terbesar dari bagian sebuah urutan angka dengan syarat jika urutan tersebut berisi bilangan negatif seluruhnya maka MCSS adalah 0.

Jika diberikan masukan secara berurut 1, -3, 4, -2, -1, lalu 6, apakah keluarannya dan mengapa demikian?

MCSS-nya adalah 7, karena setelah kita membandingkan jumlah setiap subsequence didapat hasil MCSS-nya 7. Selain itu jika kita menggunakan salah satu algoritma MCSS juga akan didapatkan hasil 7.

Apakah harus selalu bilangan-bilangan bulat yang menjadi masukan untuk algoritma MCSS?

Tidak harus. Masukan untuk algoritma tersebut bisa sembarang bilangan real asalkan memiliki tipe data yang sama sehingga dapat dioperasikan dan dibandingkan. Contohnya masukan bertipe Double , Float, dan Long.

Mungkinkah algoritma MCSS menghasilkan bilangan negatif dan mengapamungkin/tidak mungkin?

Tidak mungkin, karena MCSS akan memilih empty sequence (yaitu 0) yang nilainya lebih besar daripada memilih salah satu angka dari urutan tersebut (bilangan negatif) sebagai hasil MCSS.

Jika keluaran yang dihasilkan algoritma MCSS adalah 0, masukan seperti apakah yang membuatnya seperti itu?

Masukan yang mungkin adalah jika seluruh urutan berisi bilangan negatif atau memang setelah dilakukan perhitungan didapat hasil MCSS adalah 0, karena jumlah nilai positif sama dengan jumlah nilai negatif yang saling meniadakan.

mcss brute force mcss quadratic mcss recursive mcss1 recursive mcss2 linear mcss linear mcss 2

Bunga lengkap, pengertian dan penjelasannya

11 May

Bunga lengkap adalah bunga yang memiliki alat kelamin dan perhiasan bunga. Perhiasan bunga terdiri dari kelopak bunga dan mahkota bunga. Kelopak bunga berfungsi untuk melindungi bunga saat masih kuncup. Sedangkan mahkota bunga yang beraneka ragam warnanya berfungsi untuk melindungi alat kelamin bunga yang ada di dalam.

Alat kelamin bunga terdiri dari:

  • Putik, yaitu alat kemalin betina, teridiri dari kepala putik, tangkai putik, dan bakal buah.
  • Benang sari yaitu alat kelamin jantan, terdiri dari kepala sari dan tangkai sari.

Bunga lengkap dan bagiannya

Di dalam bakal buah terdapat bakal biji yang berisi intin kandung lembaga dan sel telur. Sedangkan di dalam kepala sari ada kotak sari dan serbuk sari.

Contoh bunga lengkap adalah bunga mawar, bunga melati, dan kembang sepatu.

Demikian bunga lengkap dan bagian-bagiannya serta contohnya. Semoga mudah dipahami.

Adaptasi dalam keberlangsungan hidup organisme, Biologi SMP

11 May

Adaptasi adalah kemampuan makhluk hidup untuk menyesuaikan diri dengan lingkungannya. Adaptasi dibagi menjadi 3, yaitu adaptasi morfologi, fisiologi, dan tingkah laku.

Berikut contoh-contoh adaptasi,

1. Adaptasi morfologi, adalah adaptasi makhluk hidup melalui bentuk tubuhnya agar sesuai dengan lingkungan.

  • Bebek memiliki kaki yang berselaput untuk berenang di air
  • Tubuh kaktus dikelilingi oleh duri untuk mengurangi penguapan cairan tubuhnya
  • Siput memiliki cangkang yang keras untuk melindungi tubuhnya

2. Adaptasi fisiologi, adalah adaptasi makhluk hidup melalui fungsi-fungsi organ/alat di tubuhnya.

  • Kantung semar mengeluarkan bebauan untuk mengundang serangga
  • Lendir pada kulit katak digunakan untuk membantu pernapasan di air
  • Semut mengeluarkan hormon feromon ketika dalam bahaya/ mendapat makanan agar semut lain datang

3. Adaptasi tingkah laku, adalah adaptasi makhluk hidup melalui tingkah lakunya di lingkungannya.

  • Cicak akan melakukan pemutusan ekor apabila dalam keadaan bahaya (autotomi)
  • Daun putri malu akan menutup jika disentuh
  • Laron akan menghinggapi benda-benda yang terang

Demikianlah adaptasi beserta penjelasan dan contoh-contohnya. Untuk contoh-contoh yang lebih banyak, bisa lihat di Contoh-contoh adaptasi lengkap. Semoga membantu.

Metode pengolahan data Decision Tree, Naïve Bayes, dan Decision Table

10 May

Dalam mengolah data dan mengambil kesimpulan dari kumpulan data, kita dapat menggunakan 3 metode, yakni decision tree, naïve bayes, dan decision table. Dan pada kesempatan kali ini, saya akan menjelaskan ketiganya. Mudah-mudahan semuanya paham dan mengerti konsep serta cara penggunaannya. Oke berikut:

a)      Decision Tree Learning (DTL)

DTL merupakan sebuah metode dalam memprediksi/menyimpulkan nilai sebuah item/kategori/kelas berdasarkan nilai-nilai item lain yang mempengaruhinya. Secara gampangnya menghasilkan kesimpulan terhadap sebuah item berdasarkan nilai beberapa input item. Dalam prosesnya, DTL menggunakan sebuah decision tree untuk mengambil kesimpulan.

contoh decision tree

Decision Tree di atas menunjukkan alur pengambilan keputusan seseorang berdasarkan beberapa nilai beberapa item yaitu ParentsVisiting, Weather, dan Money. Pada leaf node merupakan tindakan yang akan diambil sementara inner node menunjukkan item yang menjadi input dan tiap cabang dari inner node mewakili dari salah satu nilai yang dimiliki oleh inner node tersebut.

b) Naïve Bayes

Naïve Bayes merupakan sebuah metode pengkalisifikasian yang bersifat probabilistik berdasarkan teorema Bayes dengan anggapan  fitur-fitur yang mempengaruhi pengklasifikasian tidak saling bergantung/berhubungan, sehingga ada tidaknya salah satu atau beberapa fitur tidak mempengaruhi fitur lainnya.

c) Decision Tables

Secara umum, decision tables mirip dengan konsep decision tree yaitu sama-sama menggunakan konsep dasar if-else atau switch-case. Bedanya hanya pada bagian representasi dimana decision table menggunakan tabel.

Tabel akan dibagi menjadi 2 bagian besar, yaitu kondis dan aksi. Kondisi merupakan hal-hal yang mempengaruhi pengambilan keputusan sementara aksi merupakan keputusan yang diambil. Keputusan yang diambil bisa lebih dari 1.

contoh decision table

 

Dependent Linear and Independent Linear

3 May

Untuk membuktikan bahwa sebuah himpunan fungsi adalah dependent linear, kita harus mencari konstanta a, b, c, dst yang tidak semuanya 0, sedemikian sehingga ap + bq + cr + … = 0. Jika kita tidak bisa menemukan konstanta a, b, c, dst yang tidak semuanya 0, maka dapat disimpulkan bahwa himpunan fungsi tersebut adalah independent linear.

Contoh 1:

Buktikan bahwa himpunan {2x, x – 1, 2 – x} dependen linier.

Misalkan:
p = 2x
q = x – 1
r = 2 – x

Agar {p, q, r} dependen linier, maka harus ada konstanta a, b, c, yang tidak semuanya 0, sedemikian
sehingga ap + bq + cr = 0.

Jika disederhanakan:
a(2x) + b(x – 1) + c(2 – x) = 0
2ax + bx – b + 2c – cx = 0
x(2a + b – c) – b + 2c = 0

Maka, terdapat sebuah sistem dengan 2 persamaan:
2a + b – c = 0
–b + 2c = 0

Dengan mengambil a = 1, b = –4, dan c = –2, maka sistem persamaan tersebut terpenuhi. Karena a, b, c
tidak semuanya 0, maka terbukti bahwa {p, q, r} dependen linier. (QED)

Contoh 2:

Buktikan bahwa himpunan {1, 2x – 1, x2 + 1} independen linier.

Misalkan:
p = 1
q = 2x – 1
r = x^2 + 1 (x^2 menyatakan x kuadrat)

Agar {p, q, r} dependen linier, maka harus ada konstanta a, b, c, yang tidak semuanya 0, sedemikian
sehingga ap + bq + cr = 0.

Jika disederhanakan:
a + b(2x – 1) + c(x^2 + 1) = 0
a + 2bx – b + cx^2 + c = 0
cx^2 + 2bx + a – b + c = 0

Maka, terdapat sebuah sistem dengan 3 persamaan:
c = 0
2b = 0
a – b + c = 0

Solusi yang memenuhi hanyalah a = 0, b = 0, c = 0. Karena a, b, c semuanya 0, maka terbukti bahwa
{p, q, r} independen linier. (QED)

Okay, demikianlah sedikit penjelasan mengenai dependent linear dan independent linear yang biasanya sering kita gunakan dalam pemasalahan matematika, terutama matriks dalam aljabar linear. Semoga kita semua mengerti dan bertambah ilmunya. Terima kasih.

Find real square roots in ML

3 May

Okay, pada kesempatan kali ini kita akan membahas functional programming ML untuk mencari nilai akar real dari sebuah bilangan a. Berikut adalah code-nya, silakan dilihat dan dipelajari:

fun findroot (a, x, acc) =
   let val nextx = (a/x + x) / 2.0
   in if abs (x-nextx) < acc*x then nextx
      else findroot (a, nextx, acc)
   end;

fun sqroot a = findroot (a, 1.0, 1.0E~10);

Kita dapat juga menulis fungsi tersebut dengan menggunakan metode seperti di bawah ini, sehingga terdapat fungsi di dalam fungsi. Check this out!

fun sqroot a =
   let val acc = 1.0E~10
   fun findroot x =
      let val nextx = (a/x + x) / 2.0
      in if abs (x-nextx) < acc*x then nextx
         else findroot nextx
      end
  in findroot 1.0 end;

Ya cukup sekian kodingan untuk menemukan atau find nilai real dari operasi akar atau square roots dari sebuah bilangan a di atas. Semoga dapat memberikan inspirasi bagi semua. Silakan mencoba, terima kasih.

Make Fibonacci Numbers in ML

3 May

Hari ini kita akan mencoba membuat fungsi yang akan mengembalikan fibonacci number atau urutan angka yang merupakan barisan fibonacci. Implementasi fungsi pada ML yang akan dibahas di bawah ini terbagi 2, menjadi fibonacci versi naive dan fibonacci yang lebih cepat atau faster.

Okay, berikut implementasi fibonacci versi naive:

fun fib 0 = 0
   |fib 1 = 1
   |fib n = fib(n-2) + fib(n-1);

Selanjutnya kita akan definisikan fungsi fibonacci yang implementasinya akan lebih cepat daripada fungsi di atas:

fun fib(prev, curr:int) = (curr, prev+curr);

fun fibpair (n) =
   if n=1 then (0,1)
   else fib(fibpair(n-1));

Fungsi di atas akan lebih cepat daripada sebelumnya walaupun kita tidak memakai tail recursive. Silakan mencoba dan berkreasi sendiri dengan fungsi fibonacci yang saya paparkan, terima kasih.

Artificial Intelligence

2 May

Banyak orang yang mungkin belum mengetahui apa itu artificial intelligence atau AI. Dan pada kesempatan kali ini saya akan sedikit menjelaskan mengenai AI ini.

Berikut adalah beberapa pengertian AI menurut beberapa ahli:

The exciting new eff ort to make computers think …
machines with minds, in the full and literal sense.”
(Haugeland, 1985)

The study of mental faculties through the use of
computational models.” (Charniak & McDermott, 1985)

The art of creating machines that perform functions that
require intelligence when performed by people.”

(Kurzweil,1990)

AI… is concerned with intelligent behaviour in artifacts.”
(Nilsson, 1998)

Dari banyak pendapat tersebut dapat kita sarikan, bahwa AI atau artificial intelligence atau kecerdasan buatan adalah sebuah upaya untuk membuat sebuah mesin atau komputer atau apapun untuk berpikir layaknya manusia, sehingga pada akhirnya dapat membantu setiap pekerjaan manusia.

Denaturasi protein dari Kimia 12 SMA

1 May

Mungkin sebagian dari kita ada yang belum mengetahui apa itu denaturasi protein. Dan pada kesempatan ini saya akan menjelaskannya kepada anda semua.

Denaturasi protein adalah kerusakan struktur protein, untuk protein kuarterner, tersier, dan sekunder, menjadi struktur protein primer. Dan faktor-faktor yang memengaruhi denaturasi ini adalah:
1. Perubahan pH yang ekstrim.
2. Suhu.
3. Pelarut organik, seperti alkohol.
4. Penambahan zat kimia tertentu.
5. Perlakuan mekanik.

Begitulah denaturasi protein yang sudah saya jelaskan di atas. Semoga bermanfaat untuk semua. Oia satu lagi, materi denaturasi protein ini saya ambil dari pelajaran kimia SMA kelas 12.

Function to return last element of a list in ML

1 May

Pada kesempatan kali ini, saya akan menjelaskan fungsi yang dapat kita pakai dalam fungsional programming menggunakan Meta Language atau ML. Fungsi ini berfungsi untuk mengembalikan elemen terakhir dari sebuah list. Berikut fungsinya:

fun lastElement [] = raise Empty
   |lastElement [x] = x
   |lastElement (_::xs) = lastElement xs;

Fungsi di atas adalah fungsi yang diharapkan karena akan memaksimumkan penggunaan pattern matching.

Perhatikan bahwa [x] ekuivalen dengan x::[].

Empty merupakan exception standar yang berguna untuk menandakan bahwa tidak ada elemen dalam list, yang juga digunakan oleh fungsi built-in hd dan tl. Boleh juga membuat exception sendiri.

Selain fungsi di atas, kita juga dapat membuat sebuah fungsi lain seperti di bawah ini yang memiliki fungsi yang sama, yaitu untuk mengembalikan elemen terakhir pada sebuah list:

fun lastElement [] = raise Empty
   |lastElement (x::xs) = if null xs then x else lastElement xs;

Perhatikan bahwa null xs ekuivalen dengan xs = [] atau xs = nil.

Okay, cukup sekian pembahasan fungsi untuk me-return atau mengembalikan last element dari sebuah list di functional programming menggunakan Meta Language atau ML. Semoga dapat membantu semuanya…