Vous êtes sur la page 1sur 18

Algoritma

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas


Belum Diperiksa

Diagram Alur sering digunakan untuk menggambarkan sebuah algoritma.

Dalam matematika dan komputasi, algoritma atau algoritme [1] merupakan kumpulan perintah untuk
menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga
akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal
yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua
kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai
langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai
tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari
karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi
algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem
komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu
masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma
tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu
permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang
membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

Daftar isi
[sembunyikan]

1 Sejarah istilah "algoritma"


2 Jenis-jenis Algoritma
3 Lihat pula
4 Catatan kaki

[sunting]Sejarah

istilah "algoritma"

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawrizmi (hidup
sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12
"Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturanaturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya
dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang
mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu
permasalahan.

[sunting]Jenis-jenis

Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara
untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang
digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu
algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma
yang berbeda.

Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahanpermasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian
masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah
denganmembagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang
terbentuk.

Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu
masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan
yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-

sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara
intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.
Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya

jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah"
apa yang dilihat terbaik pada saat itu.

DAFTAR ALGORITMA

Algoritma kombinatorial
[sunting]Algoritma

kombinatorial umum

Algoritma pencari-siklus Floyd: iterasi untuk mencari siklus dalam barisan/sekuens

(uniformly distributed) Pseudorandom number generators:

Blum Blum Shub

Mersenne twister
Robinson-Schensted algorithm: generates permutations from pairs of Young tableaux

[sunting]Algoritma

graph

Artikel utama untuk bagian ini adalah: Teori graph

Algoritma Bellman-Ford: menghitung jarak terpendek pada graf berbobot, di mana sisi bisa
memiliki bobot negatif

Algoritma Dijkstra: menghitung jarak terpendek pada graf berbobot, tanpa sisi berbobot negatif.

Algoritma Floyd-Warshall: menghitung solusi jarak terpendek untuk semua pasang titik pada
sebuah graf berarah dan berbobot

Algoritma Kruskal: mencari pohon rentang minimum pada sebuah graf

Algoritma Prim: mencari pohon rentang minimum pada sebuah graf

Algoritma Boruvka: mencari pohon rentang minimum pada sebuah graf

Algoritma Ford-Fulkerson: computes the maximum flow in a graph

Algoritma Edmonds-Karp: implementation of Ford-Fulkerson

Nonblocking Minimal Spanning Switch say, for a telephone exchange

Spring based algorithm: algorithm for graph drawing

Topological sort

Algoritma Hungaria: algorithm for finding a perfect matching

[sunting]Algoritma

pencarian

Pencarian linear: mencari sebuah item pada sebuah list tak berurut

Algoritma seleksi: mencari item ke-k pada sebuah list

Pencarian biner: menemukan sebuah item pada sebuah list terurut

Pohon Pencarian Biner

Pencarian Breadth-first: menelusuri sebuah graf tingkatan demi tingkatan

Pencarian Depth-first: menelusuri sebuah graf cabang demi cabang

Pencarian Best-first: menelusuri sebuah graf dengan urutan sesuai kepentingan dengan
menggunakan antrian prioritas

Pencarian pohon A*: kasus khusus dari pencarian best-first

Pencarian Prediktif: pencarian mirip biner dengan faktor pada magnitudo dari syarat pencarian
terhadap nilai atas dan bawah dalam pencarian. Kadang-kadang disebut pencarian kamus atau
pencarian interpolasi.

Tabel Hash: mencari sebuah item dalam sebuah kumpulan tak berurut dalam waktu O(1).

[sunting]Algoritma

string

[sunting]Pencarian

Algoritma brute force

Algoritma Aho-Corasick

Algoritma Bitap

Algoritma Boyer-Moore

Algoritma Knuth-Morris-Pratt

Algoritma Karp-Rabin

[sunting]Approximate matching

Levenshtein edit distance

[sunting]Algoritma

penyusunan

Binary tree sort

Bogosort

Bubble sort: for each pair of indices, swap the items if out of order

Bucket sort

Comb sort

Cocktail sort

Counting sort

Gnome sort

Heapsort: convert the list into a heap, keep removing the largest element from the heap and
adding it to the end of the list

Insertion sort: determine where the current item belongs in the list of sorted ones, and insert it
there

Merge sort: sort the first and second half of the list separately, then merge the sorted lists

Pancake sorting

Pigeonhole sort

Quicksort: divide list into two, with all items on the first list coming before all items on the second
list.; then sort the two lists. Often the method of choice

Radix sort: sorts strings letter by letter

Selection sort: pick the smallest of the remaining elements, add it to the end of the sorted list

Shell sort: an attempt to improve insertion sort

Smoothsort

Stupid sort

Topological sort

[sunting]Compression
[sunting]Lossless

algorithms

compression algorithms

Burrows-Wheeler transform: preprocessing useful for improving lossless compression

DEFLATE: lossless data compression

Delta encoding: aid to compression of data in which sequential data occurs frequently

Incremental encoding: delta encoding applied to sequences of strings

LZW: lossless data compression (Lempel-Ziv-Welch)

LZ77 (algorithm): LZ77 and LZ78 are the names for the two lossless data compression algorithms

LZMA: short for Lempel-Ziv-Markov chain-Algorithm

LZO: data compression algorithm that is focused on speed

PPM compression algorithm

Shannon-Fano coding

Truncated binary encoding

Run-length encoding: lossless data compression taking advantage of strings of repeated


characters

SEQUITUR algorithm: lossless compression by incremental grammar inference on a string

EZW (Embedded Zerotree Wavelet)

Entropy encoding: coding scheme that assigns codes to symbols so as to match code lengths
with the probabilities of the symbols
Huffman coding: simple lossless compression taking advantage of relative character

frequencies
Adaptive Huffman coding: adaptive coding technique based on Huffman coding

Arithmetic coding: advanced entropy coding

Range encoding: data compression method that is believed to approach the compression
ratio of arithmetic coding
Entropy coding with known entropy characteristics

Unary coding: code that represents a number n with n ones followed by a zero

Elias delta|gamma|omega coding: universal code encoding the positive integers

Fibonacci coding: universal code which encodes positive integers into binary code words

Golomb coding: form of entropy coding that is optimal for alphabets following geometric
distributions

Rice coding: form of entropy coding that is optimal for alphabets following geometric
distributions

[sunting]Lossy

compression algorithms

Linear predictive coding: lossy compression by representing the spectral envelope of a digital
signal of speech in compressed form

A-law algorithm: standard companding algorithm

Mu-law algorithm: standard analog signal compression or companding algorithm

Fractal compression: method used to compress images using fractals

Transform coding: type of data compression for "natural" data like audio signals or photographic
images

Vector quantization: technique often used in lossy data compression

Wavelet compression: form of data compression well suited for image compression (sometimes
also video compression and audio compression)

[sunting]Computational

geometry

Gift wrapping algorithm: determining the convex hull of a set of points

Graham scan determining the convex hull of a set of points in the plane

Point in polygon: tests whether a given point lies within a given polygon

[sunting]Grafik

komputer

Bresenham's line algorithm: plots points of a 2-dimensional array to form a straight line between 2
specified points (uses decision variables)

DDA line algorithm: plots points of a 2-dimensional array to form a straight line between 2
specified points (uses floating-point math)

Flood fill: fills a connected region of a multi-dimensional array with a specified symbol

Painter's algorithm: detects visible parts of a 3-dimensional scenery

Ray tracing: realistic image rendering

[sunting]Algoritma

Kriptografi

Lihat juga Topik dalam kriptografi

Symmetric (secret key) encryption:

Advanced Encryption Standard (AES), winner of NIST competition

Blowfish

Data Encryption Standard (DES), sometimes DE Algorithm, winner of NBS selection


competition, replaced by AES for most purposes

IDEA

RC4 (cipher)
Asymmetric (public key) encryption or digital signature:

DSA

ElGamal

RSA

Diffie-Hellman key exchange

NTRUEncrypt
Cryptographic Message digest functions:

MD5 Note that there is now a method of generating collisions for MD5

RIPEMD-160

SHA-1

HMAC: keyed-hash message authentication


Cryptographically secure pseudo-random number generators

Blum Blum Shub - based on the hardness of factorization

Yarrow algorithm

Fortuna, allegedly an improvement on Yarrow

Other

Diffie-Hellman: key exchange

[sunting]Algoritma

Distributed systems

Lamport ordering: a partial ordering of events based on the happened-before relation

Snapshot algorithm: a snapshot is the process of recording the global state of a system

Vector ordering: a total ordering of events

[sunting]Algoritma

Numerical

See also main article numerical analysis and list of numerical analysis topics

Algoritma De Boor: computes splines.

Algoritma De Casteljau: computes Bezier curves

False position method: approximates roots of a function

Gauss-Jordan elimination: solves systems of linear equations

Algoritma Gauss-Legendre: computes the digits of pi

Gauss-Newton algorithm: find minimum of function of several variables

Kahan summation algorithm: a more accurate method of summing floating-point numbers

Levenberg-Marquardt algorithm: find minimum of function of several variables

MISER algorithm: Monte Carlo simulation, numerical integration

Newton's method: finds zeros of functions with calculus

Bracketing Methods:

Rounding functions: the classic ways to round numbers

Secant method: approximates roots of a function

Shifting nth-root algorithm: digit by digit root extraction

Square root: approximates the square root of a number

Strassen algorithm

[sunting]Optimization

algorithms

Simplex algorithm: An algorithm for solving the linear programming problem

Branch and bound

Simulated annealing

Genetic algorithms

Particle swarm

Tabu search

Local search

[sunting]Digital

signal processing

CORDIC: Fast trigonometric function computation technique.

Fast Fourier transform: determines the frequencies contained in a (segment of a) signal

Cooley-Tukey FFT algorithm


Rainflow-counting algorithm: Reduces a complex stress history to a count of elementary stress-

reversals for use in fatigue analysis

Osem: algorithm for processing of medical images

Goertzel algorithm Can be used for DTMF digit decoding.

Discrete Fourier transform

Rader's FFT algorithm

Bluestein's FFT algorithm

[sunting]Number

theoretic algorithms

Discrete logarithm:

Baby-step giant-step

Pollard's rho algorithm for logarithms

Pohlig-Hellman algorithm

Index calculus algorithm

Euclidean algorithm: computes the greatest common divisor

Integer factorization: breaking an integer into its prime factors

Trial division

Lenstra elliptic curve factorization

Pollard's rho algorithm

Pollard's p-1 algorithm

Congruence of squares

Quadratic sieve

Special number field sieve

General number field sieve

Jones's period proxy algorithm


Multiplication algorithms: fast multiplication of two numbers

Primality tests: determining whether a given number is prime

AKS primality test

Miller-Rabin primality test

Sieve of Eratosthenes

Sieve of Atkin

[sunting]Numerical

algebra

Buchberger's algorithm: finds a Grbner basis

Eigenvalue algorithm

Exponentiating by squaring: quickly computes powers of numbers and matrices

Gram-Schmidt process: orthogonalizes a set of vectors

Knuth-Bendix completion algorithm: for rewriting rule systems

Multivariate division algorithm: for polynomials in several indeterminates

[sunting]Parsing

Recursive descent parser: A top-down parser suitable for LL(k) grammars

LL parser: A relatively simple linear time parsing algorithm for a limited class of context-free
grammars
LR parser: A more complex linear time parsing algorithm for a larger class of context-free

grammars. Variants:

Operator-precedence parser

SLR (Simple LR) parser

LALR (Look-ahead LR) parser

Canonical LR parser
Packrat parser: A linear time parsing algorithm supporting some context-free

grammars and parsing expression grammars

CYK algorithm: An O(n3) algorithm for parsing any context-free grammar

Earley's algorithm: Another O(n3) algorithm for parsing any context-free grammar

[sunting]Teknik

perangkat lunak

Algorithms for Recovery and Isolation Exploiting Semantics: recovery

Unicode Collation Algorithm

CHS conversion: Converting between disk addressing systems

Cyclic redundancy check: calculation of a check word

Parity: Simple/fast error detection technique. Is a number even or odd?

Diff: compare two sequences. An example of Dynamic programming (dynamic refers to the
property that the optimal solution can be constructed by combining optimal solutions to sub-problems
e.g. quicksort).

[sunting]Algoritma

kuantum

Application of quantum computation to various categories of problems and algorithms

Grover's algorithm: provides quadratic speedup for many search problems

Shor's algorithm: provides exponential speedup for factorizing a number

Deutsch-Jozsa algorithm: criterion of balance for Boolean function

[sunting]Algoritma

medis

Medical algorithm

Texas Medication Algorithm Project

[sunting]Lainnya

Astronomical algorithms

Banker's algorithm

Baum-Welch algorithm

Doomsday algorithm: day of the week

Levenberg-Marquardt nonlinear least squares fitting algorithm

Marzullo's algorithm: distributed clock synchronization

Page replacement algorithms

Risch algorithm

Schreier-Sims algorithm

Todd-Coxeter algorithm

Viterbi algorithm

Xor swap algorithm: swaps the values of two variables without using a buffer

www.wikipedia.org

Konsep Algoritma Pemrograman


August 4th, 2009NuNo comments

Sebelum belajar algoritma pemrograman, akan lebih baik kita pahami terlebih dahulu langkah-langkah
pembuatan suatu program. Terdapat beberapa langkah umum dalam pembuatan suatu program yaitu:
1.
2.
3.
4.
5.
6.
7.

Mendefinisikan masalah
Mencari solusinya
Menentukan algoritma
Menulis program
Menguji program
Mendokumentasikan program
Merawat program Read more
Categories:Programming AlgorithmsTags:algoritma, bahasa
pemrograman, konsep, kuliah, Pemrograman, program, pseudo code, solusi,source code

Tipe Data
April 27th, 2009AuthorNo comments

Dalam algoritma, kita harus bias menentukan tipe-tipe data yang sesuai digunakan dalam
penyelesaian masalah. Sehingga computer dapat mengolah dan mendapatkan hasil yang sesuai
menurut kebutuhan data.
Ada beberapa tipe data yang harus kita ketahui antara lain :
1. Tipe data Char dan String
Ini merupakan tipe data dasar, tipe data ini didefinisikan pada deklarsi var dibagian
algoritma/program.
Example :
Var Nama : String
Nilai : Char
Keterangan :

Nama merupakan sebuah variabel didefinisikan sebagai variabel bertipe string, maksudnya
pada variabel tersebut digunakan untuk menerima masukan sebuah nama yang terdiri dari
sekumpulan huruf, dapat berupa huruf besar, kecil, atau campuran kedua-duanya.
Nilai, didefinisikan sebagai variabel yang bertipe data char, maksudnya variabel tersebut hanya
dapat digunakan untuk memasukkan sebuah huruf dari huruf besar, seperti A, B, C,.. atau huruf kecil,
a, b, c, .
2. Tipe data Boolean
Tipe data ini digunakan untuk pengambilan keputusan dalam operasi logika. Terdiri dari true
disimbolkan T dan False yang disimbolkan F. Ketika kita ingin mendapatklan hasil yang valid/pasti,
kita menggunakan tipe data boolean untuk memperoleh keputusan dalam suatu penyelesaian yang
pasti.

3. Tipe Data Integer


Merupakan tipe data bilangan bulat.

Tipe Data

Rentang nilai

Memori

Byte

0255

1 byte

Word

065.555

1 byte

Integer

-32.768 s.d 32.767

2 byte

Long Integer

-2.147.483.648

4 byte

4. Tipe Data Real


Merupakan tipe data bilangan pecahan seperti real, single, double, comp, extend.
5. Tipe Data Subrange
Merupakan tipe data bilangan yang punya jangkauan nilai tertentu sesuai dengan definisi pada
pemrogram.
Example:
Type Variabel=Nilai_awalNilai_akhir
6. Tipe Data Enumerasi
Merupakan tipe data yang memiliki elemen-elemen tertentu yang disebut satu/satu dari bernilai
konstanta integer sesuai dengan urutannya. Pada tipe data ini elemen masukan diwakili oleh suatu
nama variable yang ditlis di dalam kurung.
Example :
Indeks_Hari = (Nol, Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu)
7. Tipe Data Array (Larik)
Tipe data ini sudah terstruktur dengan baik, walaupun masih sederhana. Tipe data ini menampung
sejumlah data dengan tipe data sama (homogen) dalam sebuah variabel.

Cara mendefinisikan tipe data array


Berdimensi satu
Var
Nama_Variabel_Array[1...N]of tipe_data
1 Nomor Indeks

Berdimensi dua
Var
Nama_Variabel_Array=Array[1...N,1...M]of tipe_data
2 buah Nomor Indeks
8. Tipe Data Record
Tipe data komposit yang sudah terstruktur denagn baik. Tipe data ini digunakan untuk menampung
data suatu obyek. Datanya berupa campuran dari tipe data seperti string, numerik, char, boolean,
atau tipe data lainnya. Tipe data ini merupakan struktur dasar dari suatu sistem database.

9. Tipe Data Array Record


Tipe data array yang dibangun dari tipe data record.
10. Tipe Data Citra
Berisi grafik/gambar yang banyak digunakan pada aplikasi video.
Example :
Grafik perkembangan jumlah penduduk.
Perbedaan variabel dengan konstanta
Variabel adalah peubah, suatu nama lokasi yang diinginkan untuk menampung tipe data tertentu yang
akan diolah komputer. Sedangkan konstanta adalah suatu harga yang diberikan pada sebuah variabel
dengan harga/nilai tidak berubah/selalu tetap.
Categories:Pascal, Programming AlgorithmsTags:algoritma, array, array record, boolean, char, data
citra, enumerasi, integer, konstanta, real, record,string, subrange, tipe data, variabel

What is Algoritma?
April 23rd, 2009AuthorNo comments

Algoritma merupakan konsep dasar dari sebuah program. Dalam pembuatannya dibutuhkan daya
nalar yang baik dan logis. Algoritma terdiri dari beberapa langkah dalam penyelesaian masalah.
Namun perlu diketahui, langkah-langkah dalam algoritma dibatasi oleh obyek masalah yang
dihadapinya. Bahasa pemrograman adalah alat untuk berkomunikasi. Brainware dengan mesin
computer. Bahasa pemrograman terdiri dari berbagai macam, contohnya seperti Pascal, C, Basic,
sedangkan bahasa pemrograman itu sendiri terbagi menjadi dua kelompok, yaitu bahasa
pemrograman tingkat tinggi seperti pascal, basic, C. Dan Bahasa pemrograman tingkat rendah seperti
Assembly. Dari dua kelompok tersebut ada yang berbasiskan system operasi DOS dan pemrograman
Windows.
Dalam menyusun algoritma, diperlukan tahapan-tahapan dalam penyelesaiannya. Pertama kita harus
mendefinisikan masdalah agar masalah menjadi jelas dan dapat kita ketahui dengan pasti cara
penyelesaiannya. Jika sudah diketahui dengan pasti, barulah mencari metode-metode apa yang sesuai
digunakan dalam menyelesaikan masalah tersebut. And then menyusun konsep langkah-langkah
penyelesaian masalah secara real. Dengan menggunakan bahasa pemrograman.
Plan of Program?
Menganalisis masalah yang ada dapat dilakukan separti mengumpulkan data, cara penyelesaian,
menyeleksi data, dan output yang diinginkan. Mendesign sistem, logika yang dapat meliputi datainput/output. Dalam pelaksanaan program, hal yang dilakukan editing, memeriksa kesalahan
mengenai sintaksnya, pelaksanaan (Run). Kemudian barulah suatu permasalahan dapat diperoleh
hasil yang diinginkan.
Algoritmna merupakan kerangka dasar dari konsep suatu program untuk menyelesaikan masalah .
Algoritma tidak terikat dari suatu bahasa pemrograman manapun atau dengan kata lain bahasa yang
digunakan adalah bebas dengan ba

http://www.nusinau.com/tag/algoritma/

Vous aimerez peut-être aussi