Senin, 19 Desember 2011

International Business Machines
International Business Machines Corporation (IBM) adalah sebuah perusahaan Amerika Serikat yang memproduksi dan menjual perangkat keras dan perangkat lunak komputer. IBM didirikan pada 15 Juni 1911, beroperasi sejak 1888 dan berpusat di Armonk, New York, Amerika Serikat. Dengan lebih dari 330.000 pegawai di seluruh dunia dan pendapatan US$96 miliar (angka dari 2004), IBM adalah perusahaan teknologi informasi terbesar di dunia, dan salah satu yang terus berlanjut dari abad 19. Dia memiliki teknisi dan konsultan di lebih dari 170 negara dan laboratorium pengembangan yang berlokasi di seluruh dunia, di setiap cabang ilmu komputer dan teknologi informasi; beberapa dari mereka adalah pionir di bidang mulai dari komputer mainframe ke nanoteknologi. Mesin-mesin dan produk IBM yang sukses adalah Mainframe dengan sistem 370 (1960an), IBM PC, AS/400 dan RS/6000 (1980an), PowerPC CPU (1990an, bekerja sama dengan Motorola - sekarang Freescale ) Dalam tahun-tahun belakangan ini, pendapatan jasa dan konsultasi lebih besar dari produksi. Samuel J. Palmisano dipilih menjadi CEO pada 29 Januari 2002 setelah memimpin Jasa Global IBM, dan menolongnya menjadi bisnis dengan "backlog" US$100 miliar di 2004. Pada 2002 perusahaan ini menguatkan kemampuan nasihat bisnisnya dengan mengambil alih perusahaan jasa konsultan tekemuka PricewaterhouseCoopers. Perusahaan ini terus memfokuskan usahanya di konsultasi jawaban bisnis, jasa dan perangkat lunak, dan juga menekankan chip harga tinggi dan teknologi perangkat keras. Pada 2004 dia mempekerjakan sekitar 191.000 teknisi profesional. Yang termasuk 300-400 Teknisi Terkenal dan 50-60 "IBM fellow", teknisi paling senior. IBM Research memiliki delapan laboratorium riset yang terletak di belahan utara dunia, dengan setengahnya terletak di luar Amerika Serikat. Pegawai IBM telah meraih lima penghargaan Nobel. Di Amerika, mereka juga mendapatkan empat Penghargaan Turing, lima Medali Teknologi Nasional, dan lima Medali Sains Nasional, dan juga banyak lagi di luar Amerika. CEO IBM sekarang adalah Samuel J. Palmisano yang menggantikan Louis V. Gerstner sejak tanggal 29 Januari 2002. Louis V. Gerstner menjadi CEO IBM selama 10 tahun menggantikan John Ackers yang dipecat karena hampir membangkrutkan IBM pada tahun 1992. Sebelumnya Louis V. Gerstner bekerja untuk Nabisco. IBM PC adalah sebutan untuk keluarga komputer pribadi buatan IBM. IBM PC diperkenalkan pada 12 Agustus 1981, dan "dipensiunkan" pada tanggal 2 April 1987. Sejak diluncurkan oleh IBM, IBM PC memiliki beberapa keluarga, yakni • IBM 4860 PCjr • IBM 5140 Convertible Personal Computer (laptop) • IBM 5150 Personal Computer (PC yang asli) • IBM 5155 Portable PC (sebenarnya merupakan PC XT yang portabel) • IBM 5160 Personal Computer/eXtended Technology • IBM 5162 Personal Computer/eXtended Technology Model 286 (sebenarnya merupakan PC AT) • IBM 5170 Personal Computer/Advanced Technology • 1 IBM 5150 Personal Computer o 1.1 Model o 1.2 Versi BIOS • 2 IBM 5140 PC Convertible (laptop) • 3 IBM 5160 Personal Computer eXTended • IBM 5150 Personal Computer IBM PC 5150 adalah komputer pribadi generasi pertama yang diluncurkan pada 12 Agustus 1981. Komputer pribadi tersebut diperkuat dengan menggunakan prosesor 16-bit Intel 8088 berkecepatan 4.77 MHz, power supply 63.5 Watt dan memori yang hanya 64 KB. Media penyimpanan yang digunakannya hanya floppy disk drive 5.25 inci 320 KB atau 360 KB (double-side floppy disk). IBM PC datang dengan ROM yang dilengkapi dengan interpreter bahasa Microsoft Cassette BASIC, sehingga pengguna dapat melakukan pemrograman (jika tidak ada sistem operasi yang dimuat). ROM juga dilengkapi dengan fungsi diagnosa Power-on Self Test (POST) yang akan melakukan pengecekan terhadap perangkat keras sebelum dapat bekerja (meski proses pengecekan yang dilakukannya sangat lambat, lebih dari 10 detik). • Model Sebelum Maret 1983, IBM memasarkan beberapa model dengan konfigurasi yang berbeda (meskipun hanya sedikit perbedaannya), tapi setelah Maret 1983, IBM PC 5150 datang dalam dua model, yakni: • IBM PC 5150 Model 166 (Intel 8088, 256 KB RAM, 1 buah floppy-disk drive 360 KB) • IBM PC 5150 Model 176 (Intel 8088, 256 KB RAM, 2 buah floppy-disk drive 360 KB) Hingga dipensiunkan tanggal 2 April 1987 (enam tahun masa jabatan), IBM PC dapat mendunia. Tetapi, secara arsitektural, tidak ada perubahan yang signifikan di dalamnya. • Versi BIOS IBM PC datang dengan tiga versi BIOS, yang dibedakan dari tanggalnya, yakni sebagai berikut: • 24 April 1981, merupakan versi BIOS pertama dalam IBM PC yang hanya mendukung memori fisik hingga 544 KB. Tidak dilengkapi dengan fitur pemindaian blok memori UMA (Upper Memory Address) untuk beberapa kartu ekspansi (seperti video, adapter hard disk, dan lainnya). • 19 Oktober 1981, merupakan versi BIOS kedua dalam IBM PC yang hanya mendukung memori fisik hingga 544 KB. Sama seperti halnya versi pertama tapi ditambahi beberapa bugfix. • 27 Oktober 1982, merupakan versi BIOS ketiga yang dapat mendukung memori fisik hingga 640 KB (conventional memory), ditambah dengan fitur pemindaian blok memori UMA. BIOS ini merupakan BIOS yang paling umum digunakan. Upgrade BIOS hanya dapat dilakukan dengan mengganti chip BIOS yang lama dengan chip BIOS yang baru. IBM menjual kit upgrade BIOS dengan nomor spare part 1501005. • IBM 5140 PC Convertible (laptop) IBM memasarkan laptop pertama yang mereka sebut sebagai IBM 5140 PC Convertible pada tanggal 2 April 1986, yang merupakan pengganti dari IBM 5155 Portable PC yang dihentikan produksinya. Sistem IBM 5140 tidaklah sesukses IBM 5150 atau laptop-laptop lainnya, mengingat laptop pesaing menawarkan media penyimpanan yang lebih baik, penggunaan prosesor yang lebih cepat, layar yang lebih baik, ukuran yang lebih kompak, dan harga yang lebih murah. Meski IBM 5140 menawarkan layar yang lebih baik dibandingkan dengan laptop-laptop pesaing, IBM 5140 tidak begitu dilirik pasar. IBM 5140 tersedia dalam dua model, yakni: • Model 2, yang diperkuat dengan menggunakan mikroprosesor Intel 80C88 CMOS 4.77 MHz, 64 KB ROM, 256 KB SRAM, layar LCD dengan resolusi 80x25, dua buah 3½ inci floppy-disk drive, keyboard 78-tombol, adaptor AC, dan baterai. Program yang tersedia dalam model ini adalah Application Selector, SystemApps, Tools, Exploring the IBM PC Convertible, dan Diagnostics. • Model 22, yang merupakan IBM 5140 Model 2 yang hanya dilengkapi dengan perangkat lunak diagnosa saja (Diagnostics). Model ini dijual dengan harga yang lebih murah dibandingkan dengan Model 2. Dua model di atas dapat ditambahi RAM hingga 512 KB dengan menggunakan kartu ekspansi memori RAM sebesar 128 KB. Selain itu, dapat diperluas dengan menggunakan modem internal 1200 bit/detik. Meski IBM 5140 menggunakan prosesor yang lambat (4.77 MHz, sama seperti IBM 5150), penggunaan SRAM sebagai memori fisik mampu meningkatkan kinerja jika dibandingkan dengan penggunaan DRAM, mengingat SRAM tidak membutuhkan sinyal refresh seperti halnya DRAM (yang mampu menambah waktu tunggu hingga 7% dari kecepatan CPU IBM PC atau IBM PC/XT). Ini berarti IBM 5140 memiliki kinerja yang lebih tinggi hingga 7% dibandingkan dengan IBM PC atau IBM PC/XT, meskipun memiliki prosesor dengan kecepatan yang sama, 4.77 MHz. Karena SRAM memang lebih andal jika dibandingkan DRAM, penggunaannya dalam 5140 tidak membutuhkan pengecekan paritas yang bahkan menambah waktu tunggu yang lebih tinggi lagi. Sebuah unit IBM 5140 memiliki fitur-fitur standar berikut: • Mikroprosesor yang dibuat berdasarkan teknologi Complimentary Metal-Oxide Semiconductor (CMOS), Intel 80C88 (variasi dari Intel 8088), dengan kecepatan 4.77 MHz. • Dua buah ROM berukuran 32 Kilobyte yang berisi hal-hal berikut (untuk menghemat daya, digunakanlah teknologi CMOS): o Power-On Selft Test yang mampu menjalankan diagnosa terhadap perangkat komputer saat melakukan proses booting, serta BIOS. o interpreter bahasa BASIC. • Memori fisik menggunakan Static Random Access Memory yang berukuran 256 KB. Dapat ditambahi hingga 512 KB. (untuk menghemat daya, maka digunakanlah teknologi CMOS). • Dua buah floppy-disk drive 3½ inci 720 KB. • Sebuah panel LCD dengan resolusi 80 kolom x25 baris (modus teks), atau 640x200 dan 320x200 pixel (modus grafik) yang dapat dilepas. • Sebuah LCD controller • Display buffer dengan ukuran RAM 16 KB, ditambah 8 KB RAM untuk menyimpan font LCD • Keyboard 78-tombol • Adaptor AC • Baterai • IBM 5160 Personal Computer eXTended IBM PC/XT adalah sebuah komputer mikro buatan IBM yang dirilis pada tanggal 8 Maret 1983. Komputer ini diperkuat dengan menggunakan hard disk berkapasitas 10 Megabyte, yang merupakan hard disk yang dianggap "spesial" pada saat itu. XT di sini merupakan singkatan dari eXTended, karena IBM PC XT memiliki fitur-fitur yang tidak dimiliki oleh IBM PC standar (5150). IBM PC XT memiliki delapan buah slot, sehingga meningkatkan kemampuan ekspansinya; kapasitas power-supply yang lebih besar; memori yang dapat dibongkar/pasang (karena semuanya berupa soket), dan dapat mendukung hingga 640 KB RAM tanpa slot ekspansi memori, selain tentunya sebuah hard disk. Karena memiliki fitur-fitur itulah, desain motherboard IBM PC/XT berbeda dengan desain motherboard IBM PC yang asli. IBM PC/XT ini menawarkan beberapa perangkat keras yang masih digunakan hingga saat ini, yakni keyboard 101 tombol (Enhanced Keyboard) yang menggantikan model keyboard IBM 83 tombol. Sumber Wikipedia.com
Port I/O
Port I/O yang berarti gerbang konektor Input/Output pada komputer, seperti pada keyboard, mouse paralel/serial ataupun USB, menyediakan koneksi untuk piranti eksternal seperti kamera digital, printer dan scanner. • System bus atau bus sistem dalam arsitektur komputer merujuk pada bus yang digunakan oleh sistem komputer untuk menghubungkan semua komponennya dalam menjalankan tugasnya. Sebuah bus adalah sebutan untuk jalur di mana data dapat mengalir dalam komputer. Jalur-jalur ini digunakan untuk komunikasi dan dapat dibuat antara dua elemen atau lebih. Data atau program yang tersimpan dalam memori dapat diakses dan dieksekusi oleh CPU melalui perantara sistem bus. Sebuah komputer memiliki beberapa bus, agar dapat berjalan. Banyaknya bus yang terdapat dalam sistem, tergantung dari arsitektur sistem komputer yang digunakan. Sebagai contoh, sebuah komputer PC dengan prosesor umumnya Intel Pentium 4 memiliki bus prosesor (Front-Side Bus), bus AGP, bus PCI, bus USB, bus ISA (yang digunakan oleh keyboard dan mouse), dan bus-bus lainnya. Bus disusun secara hierarkis, karena setiap bus yang memiliki kecepatan rendah akan dihubungkan dengan bus yang memiliki kecepatan tinggi. Setiap perangkat di dalam sistem juga dihubungkan ke salah satu bus yang ada. Sebagai contoh, kartu grafis AGP akan dihubungkan ke bus AGP. Beberapa perangkat lainnya (utamanya chipset atau kontrolir) akan bertindak sebagai jembatan antara bus-bus yang berbeda. Sebagai contoh, sebuah kontrolir bus SCSI dapat mengubah sebuah bus menjadi bus SCSI, baik itu bus PCI atau bus PCI Express. Berdasar jenis busnya, bus dapat dibedakan menjadi bus yang khusus menyalurkan data tertentu, contohnya paket data saja, atau alamat saja, jenis ini disebut dedicated bus. Namun apabila bus yang dilalui informasi yang berbeda baik data, alamat, dan sinyal kontrol dengan metode multipleks data maka bus ini disebut multiplexed bus. Kekurangan multiplexed bus adalah hanya memerlukan saluran sedikit sehingga menghemat tempat tapi kecepatan transfer data menurun dan diperlukan mekanisme yang komplek untuk mengurai data yang telah dimultipleks. Sedangkan untuk dedicated bus merupakan kebalikan dari multipexed bus. Beberapa bus utama dalam sistem komputer modern adalah sebagai berikut: • Bus prosesor. Bus ini merupakan bus tercepat dalam sistem dan menjadi bus inti dalam chipset dan motherboard. Bus ini utamanya digunakan oleh prosesor untuk meneruskan informasi dari prosesor ke cache atau memori utama ke chipset kontrolir memori (Northbridge, MCH, atau SPP). Bus ini juga terbagi atas beberapa macam, yakni Front-Side Bus, HyperTransport bus, dan beberapa bus lainnya. Sistem komputer selain Intel x86 mungkin memiliki bus-nya sendiri-sendiri. Bus ini berjalan pada kecepatan 100 MHz, 133 MHz, 200 MHz, 266 MHz, 400 MHz, 533 MHz, 800 MHz, 1000 MHz atau 1066 MHz. Umumnya, bus ini memiliki lebar lajur 64-bit, sehingga setiap detaknya ia mampu mentransfer 8 byte. • Bus AGP (Accelerated Graphic Port). Bus ini merupakan bus yang didesain secara spesifik untuk kartu grafis. Bus ini berjalan pada kecepatan 66 MHz (mode AGP 1x), 133 MHz (mode AGP 2x), atau 533 MHz (mode AGP 8x) pada lebar jalur 32-bit, sehingga bandwidth maksimum yang dapat diraih adalah 2133 MByte/s. Umumnya, bus ini terkoneksi ke chipset pengatur memori (Northbridge, Intel Memory Controller Hub, atau NVIDIA nForce SPP). Sebuah sistem hanya dapat menampung satu buah bus AGP. Mulai tahun 2005, saat PCI Express mulai marak digunakan, bus AGP ditinggalkan. • Bus PCI (Peripherals Component Interconnect). Bus PCI tidak tergantung prosesor dan berfungsi sebagai bus peripheral. Bus ini memiliki kinerja tinggi untuk sistem I/O berkecepatan tinggi. Bus ini berjalan pada kecepatan 33 MHz dengan lebar lajur 32-bit. Bus ini ditemukan pada hampir semua komputer PC yang beredar, dari mulai prosesor Intel 486 karena memang banyak kartu yang menggunakan bus ini, bahkan hingga saat ini. Bus ini dikontrol oleh chipset pengatur memori (northbridge, Intel MCH) atau Southbridge (Intel ICH, atau NVIDIA nForce MCP). • Bus PCI Express (Peripherals Component Interconnect Express) • Bus PCI-X (Peripherals Component Interconnect Express) • Bus ISA (Industry Standard Architecture) • Bus EISA (Extended Industry Standard Architecute) • Bus MCA (Micro Channel Architecture) • Bus SCSI (Small Computer System Interface]]. Bus ini diperkenalkan oleh Macintosh pada tahun 1984. SCSI merupakan antarmuka standar untuk drive CD-ROM, peralatan audio, harddisk, dan perangkat penyimpanan eksternal berukuran besar • Bus USB (Universal Serial Bus). Bus ini dikembangkan oleh tujuh vendor komputer, yaitu Compaq, DEC, IBM, Intel, Microsoft, NEC, dan Northern Telecom. Bus ini ditujukan bagi perangkat yang memiliki kecepatan rendah seperti keyboard, mouse, dan printer karena tidak akan efisien jika perangkat yang berkecepatan rendah dipasang pada bus berkecepatan tinggi seperti PCI. Keuntungan yang didapat dari bus USB antara lain : tidak harus memasang jumper, tidak harus membuka casing untuk memasang peralatan I/O, hanya satu jenis kabel yang digunakan, dapat mensuplai daya pada peralatan I/O, tidak diperlukan reboot. • Bus 1394. Bus yang mempunyai nama FireWire memiliki kecepatan tinggi diatas SCSI dan PCI. Bus 1394 sangat cepat, murah, dan mudah untuk diimplementasikan. Bus ini tidak hanya populer perangkat komputer tetapi juga perangkat elektronik seperti kamera digital, VCR, dan televisi. • System bus atau bus sistem, dalam arsitektur komputer merujuk pada bus yang digunakan oleh sistem komputer untuk menghubungkan semua komponennya dalam menjalankan tugasnya. Sebuah bus adalah sebutan untuk jalur di mana data dapat mengalir dalam komputer. Jalur-jalur ini digunakan untuk komunikasi dan dapat dibuat antara dua elemen atau lebih. Data atau program yang tersimpan dalam memori dapat diakses dan dieksekusi oleh CPU melalui perantara sistem bus. Sebuah komputer memiliki beberapa bus, agar dapat berjalan. Banyaknya bus yang terdapat dalam sistem, tergantung dari arsitektur sistem komputer yang digunakan. Sebagai contoh, sebuah komputer PC dengan prosesor umumnya Intel Pentium 4 memiliki bus prosesor (Front-Side Bus), bus AGP, bus PCI, bus USB, bus ISA (yang digunakan oleh keyboard dan mouse), dan bus-bus lainnya. Bus disusun secara hierarkis, karena setiap bus yang memiliki kecepatan rendah akan dihubungkan dengan bus yang memiliki kecepatan tinggi. Setiap perangkat di dalam sistem juga dihubungkan ke salah satu bus yang ada. Sebagai contoh, kartu grafis AGP akan dihubungkan ke bus AGP. Beberapa perangkat lainnya (utamanya chipset atau kontrolir) akan bertindak sebagai jembatan antara bus-bus yang berbeda. Sebagai contoh, sebuah kontrolir bus SCSI dapat mengubah sebuah bus menjadi bus SCSI, baik itu bus PCI atau bus PCI Express. Berdasar jenis busnya, bus dapat dibedakan menjadi bus yang khusus menyalurkan data tertentu, contohnya paket data saja, atau alamat saja, jenis ini disebut dedicated bus. Namun apabila bus yang dilalui informasi yang berbeda baik data, alamat, dan sinyal kontrol dengan metode multipleks data maka bus ini disebut multiplexed bus. Kekurangan multiplexed bus adalah hanya memerlukan saluran sedikit sehingga menghemat tempat tapi kecepatan transfer data menurun dan diperlukan mekanisme yang komplek untuk mengurai data yang telah dimultipleks. Sedangkan untuk dedicated bus merupakan kebalikan dari multipexed bus. Beberapa bus utama dalam sistem komputer modern adalah sebagai berikut: • Bus prosesor. Bus ini merupakan bus tercepat dalam sistem dan menjadi bus inti dalam chipset dan motherboard. Bus ini utamanya digunakan oleh prosesor untuk meneruskan informasi dari prosesor ke cache atau memori utama ke chipset kontrolir memori (Northbridge, MCH, atau SPP). Bus ini juga terbagi atas beberapa macam, yakni Front-Side Bus, HyperTransport bus, dan beberapa bus lainnya. Sistem komputer selain Intel x86 mungkin memiliki bus-nya sendiri-sendiri. Bus ini berjalan pada kecepatan 100 MHz, 133 MHz, 200 MHz, 266 MHz, 400 MHz, 533 MHz, 800 MHz, 1000 MHz atau 1066 MHz. Umumnya, bus ini memiliki lebar lajur 64-bit, sehingga setiap detaknya ia mampu mentransfer 8 byte. • Bus AGP (Accelerated Graphic Port). Bus ini merupakan bus yang didesain secara spesifik untuk kartu grafis. Bus ini berjalan pada kecepatan 66 MHz (mode AGP 1x), 133 MHz (mode AGP 2x), atau 533 MHz (mode AGP 8x) pada lebar jalur 32-bit, sehingga bandwidth maksimum yang dapat diraih adalah 2133 MByte/s. Umumnya, bus ini terkoneksi ke chipset pengatur memori (Northbridge, Intel Memory Controller Hub, atau NVIDIA nForce SPP). Sebuah sistem hanya dapat menampung satu buah bus AGP. Mulai tahun 2005, saat PCI Express mulai marak digunakan, bus AGP ditinggalkan. • Bus PCI (Peripherals Component Interconnect). Bus PCI tidak tergantung prosesor dan berfungsi sebagai bus peripheral. Bus ini memiliki kinerja tinggi untuk sistem I/O berkecepatan tinggi. Bus ini berjalan pada kecepatan 33 MHz dengan lebar lajur 32-bit. Bus ini ditemukan pada hampir semua komputer PC yang beredar, dari mulai prosesor Intel 486 karena memang banyak kartu yang menggunakan bus ini, bahkan hingga saat ini. Bus ini dikontrol oleh chipset pengatur memori (northbridge, Intel MCH) atau Southbridge (Intel ICH, atau NVIDIA nForce MCP). • Bus PCI Express (Peripherals Component Interconnect Express) • Bus PCI-X (Peripherals Component Interconnect Express) • Bus ISA (Industry Standard Architecture) • Bus EISA (Extended Industry Standard Architecute) • Bus MCA (Micro Channel Architecture) • Bus SCSI (Small Computer System Interface]]. Bus ini diperkenalkan oleh Macintosh pada tahun 1984. SCSI merupakan antarmuka standar untuk drive CD-ROM, peralatan audio, harddisk, dan perangkat penyimpanan eksternal berukuran besar • Bus USB (Universal Serial Bus). Bus ini dikembangkan oleh tujuh vendor komputer, yaitu Compaq, DEC, IBM, Intel, Microsoft, NEC, dan Northern Telecom. Bus ini ditujukan bagi perangkat yang memiliki kecepatan rendah seperti keyboard, mouse, dan printer karena tidak akan efisien jika perangkat yang berkecepatan rendah dipasang pada bus berkecepatan tinggi seperti PCI. Keuntungan yang didapat dari bus USB antara lain : tidak harus memasang jumper, tidak harus membuka casing untuk memasang peralatan I/O, hanya satu jenis kabel yang digunakan, dapat mensuplai daya pada peralatan I/O, tidak diperlukan reboot. • Bus 1394. Bus yang mempunyai nama FireWire memiliki kecepatan tinggi diatas SCSI dan PCI. Bus 1394 sangat cepat, murah, dan mudah untuk diimplementasikan. Bus ini tidak hanya populer perangkat komputer tetapi juga perangkat elektronik seperti kamera digital, VCR, dan televisi. Sumber Wikipedia.com

Central Processing Unit

Central Processing Unit (CPU), merujuk kepada perangkat keras komputer yang memahami dan melaksanakan perintah dan data dari perangkat lunak. Istilah lain, pemroses/prosesor (processor), sering digunakan untuk menyebut CPU. Adapun mikroprosesor adalah CPU yang diproduksi dalam sirkuit terpadu, seringkali dalam sebuah paket sirkuit terpadu-tunggal. Sejak pertengahan tahun 1970-an, mikroprosesor sirkuit terpadu-tunggal ini telah umum digunakan dan menjadi aspek penting dalam penerapan CPU. Gambar mikroprosesor Intel 80486DX2 • Komponen CPU Diagram blok sederhana sebuah CPU. Komponen CPU terbagi menjadi beberapa macam, yaitu sebagai berikut. • Unit kontrol yang mampu mengatur jalannya program. Komponen ini sudah pasti terdapat dalam semua CPU. CPU bertugas mengontrol komputer sehingga terjadi sinkronisasi kerja antarkomponen dalam menjalankan fungsi-fungsi operasinya. termasuk dalam tanggung jawab unit kontrol adalah mengambil intruksi-intruksi dari memori utama dan menentukan jenis instruksi tersebut. Bila ada instruksi untuk perhitungan aritmatika atau perbandingan logika, maka unit kendali akan mengirim instruksi tersebut ke ALU. Hasil dari pengolahan data dibawa oleh unit kendali ke memori utama lagi untuk disimpan, dan pada saatnya akan disajikan ke alat output. Dengan demikian tugas dari unit kendali ini adalah: o Mengatur dan mengendalikan alat-alat masukan (input) dan keluaran (output). o Mengambil instruksi-instruksi dari memori utama. o Mengambil data dari memori utama (jika diperlukan) untuk diproses. o Mengirim instruksi ke ALU bila ada perhitungan aritmatika atau perbandingan logika serta mengawasi kerja dari ALU. o Menyimpan hasil proses ke memori utama. • Register merupakan alat penyimpanan kecil yang mempunyai kecepatan akses cukup tinggi, yang digunakan untuk menyimpan data dan/atau instruksi yang sedang diproses. Memori ini bersifat sementara, biasanya di gunakan untuk menyimpan data saat di olah ataupun data untuk pengolahan selanjutnya. Secara analogi, register ini dapat diibaratkan sebagai ingatan di otak bila kita melakukan pengolahan data secara manual, sehingga otak dapat diibaratkan sebagai CPU, yang berisi ingatan-ingatan, satuan kendali yang mengatur seluruh kegiatan tubuh dan mempunyai tempat untuk melakukan perhitungan dan perbandingan logika. • ALU unit yang bertugas untuk melakukan operasi aritmetika dan operasi logika berdasar instruksi yang ditentukan. ALU sering di sebut mesin bahasa karena bagian ini ALU terdiri dari dua bagian, yaitu unit arithmetika dan unit logika boolean yang masing-masing memiliki spesifikasi tugas tersendiri. Tugas utama dari ALU adalah melakukan semua perhitungan aritmatika yang terjadi sesuai dengan instruksi program. ALU melakukan semua operasi aritmatika dengan dasar penjumlahan sehingga sirkuit elektronik yang digunakan disebut adder. Tugas lain dari ALU adalah melakukan keputusan dari suatu operasi logika sesuai dengan instruksi program. Operasi logika meliputi perbandingan dua operand dengan menggunakan operator logika tertentu, yaitu sama dengan (=), tidak sama dengan (¹ ), kurang dari (<), kurang atau sama dengan (£ ), lebih besar dari (>), dan lebih besar atau sama dengan (³ ). • CPU Interconnections adalah sistem koneksi dan bus yang menghubungkan komponen internal CPU, yaitu ALU, unit kontrol dan register-register dan juga dengan bus-bus eksternal CPU yang menghubungkan dengan sistem lainnya, seperti memori utama, piranti masukan /keluaran. • Cara Kerja CPU Saat data dan/atau instruksi dimasukkan ke processing-devices, pertama sekali diletakkan di MAA (melalui Input-storage); apabila berbentuk instruksi ditampung oleh Control Unit di Program-storage, namun apabila berbentuk data ditampung di Working-storage). Jika register siap untuk menerima pengerjaan eksekusi, maka Control Unit akan mengambil instruksi dari Program-storage untuk ditampungkan ke Instruction Register, sedangkan alamat memori yang berisikan instruksi tersebut ditampung di Program Counter. Sedangkan data diambil oleh Control Unit dari Working-storage untuk ditampung di General-purpose register (dalam hal ini di Operand-register). Jika berdasar instruksi pengerjaan yang dilakukan adalah arithmatika dan logika, maka ALU akan mengambil alih operasi untuk mengerjakan berdasar instruksi yang ditetapkan. Hasilnya ditampung di Akumulator. Apabila hasil pengolahan telah selesai, maka Control Unit akan mengambil hasil pengolahan di Accumulator untuk ditampung kembali ke Working-storage. Jika pengerjaan keseluruhan telah selesai, maka Control Unit akan menjemput hasil pengolahan dari Working-storage untuk ditampung ke Output-storage. Lalu selanjutnya dari Output-storage, hasil pengolahan akan ditampilkan ke output-devices. • Fungsi CPU CPU berfungsi seperti kalkulator, hanya saja CPU jauh lebih kuat daya pemrosesannya. Fungsi utama dari CPU adalah melakukan operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi yang dimasukkan melalui beberapa perangkat keras, seperti papan tombol, pemindai, tuas kontrol, maupun tetikus. CPU dikontrol menggunakan sekumpulan instruksi perangkat lunak komputer. Perangkat lunak tersebut dapat dijalankan oleh CPU dengan membacanya dari media penyimpan, seperti cakram keras, disket, cakram padat, maupun pita perekam. Instruksi-instruksi tersebut kemudian disimpan terlebih dahulu pada memori fisik (MAA), yang mana setiap instruksi akan diberi alamat unik yang disebut alamat memori. Selanjutnya, CPU dapat mengakses data-data pada MAA dengan menentukan alamat data yang dikehendaki. Saat sebuah program dieksekusi, data mengalir dari RAM ke sebuah unit yang disebut dengan bus, yang menghubungkan antara CPU dengan MAA. Data kemudian didekode dengan menggunakan unit proses yang disebut sebagai pendekoder instruksi yang sanggup menerjemahkan instruksi. Data kemudian berjalan ke unit aritmatika dan logika (ALU) yang melakukan kalkulasi dan perbandingan. Data bisa jadi disimpan sementara oleh ALU dalam sebuah lokasi memori yang disebut dengan register supaya dapat diambil kembali dengan cepat untuk diolah. ALU dapat melakukan operasi-operasi tertentu, meliputi penjumlahan, perkalian, pengurangan, pengujian kondisi terhadap data dalam register, hingga mengirimkan hasil pemrosesannya kembali ke memori fisik, media penyimpan, atau register apabila akan mengolah hasil pemrosesan lagi. Selama proses ini terjadi, sebuah unit dalam CPU yang disebut dengan penghitung program akan memantau instruksi yang sukses dijalankan supaya instruksi tersebut dapat dieksekusi dengan urutan yang benar dan sesuai. • Percabangan instruksi Pemrosesan instruksi dalam CPU dibagi atas dua tahap, Tahap-I disebut Instruction Fetch, sedangkan Tahap-II disebut Instruction Execute. Tahap-I berisikan pemrosesan CPU dimana Control Unit mengambil data dan/atau instruksi dari main-memory ke register, sedangkan Tahap-II berisikan pemrosesan CPU dimana Control Unit menghantarkan data dan/atau instruksi dari register ke main-memory untuk ditampung di MAA, setelah Instruction Fetch dilakukan. Waktu pada tahap-I ditambah dengan waktu pada tahap-II disebut waktu siklus mesin (machine cycles time). Penghitung program dalam CPU umumnya bergerak secara berurutan. Walaupun demikian, beberapa instruksi dalam CPU, yang disebut dengan instruksi lompatan, mengizinkan CPU mengakses instruksi yang terletak bukan pada urutannya. Hal ini disebut juga percabangan instruksi (branching instruction). Cabang-cabang instruksi tersebut dapat berupa cabang yang bersifat kondisional (memiliki syarat tertentu) atau non-kondisional. Sebuah cabang yang bersifat non-kondisional selalu berpindah ke sebuah instruksi baru yang berada di luar aliran instruksi, sementara sebuah cabang yang bersifat kondisional akan menguji terlebih dahulu hasil dari operasi sebelumnya untuk melihat apakah cabang instruksi tersebut akan dieksekusi atau tidak. Data yang diuji untuk percabangan instruksi disimpan pada lokasi yang disebut dengan flag. • Bilangan yang dapat ditangani Kebanyakan CPU dapat menangani dua jenis bilangan, yaitu fixed-point dan floating-point. Bilangan fixed-point memiliki nilai digit spesifik pada salah satu titik desimalnya. Hal ini memang membatasi jangkauan nilai yang mungkin untuk angka-angka tersebut, tetapi hal ini justru dapat dihitung oleh CPU secara lebih cepat. Sementara itu, bilangan floating-point merupakan bilangan yang diekspresikan dalam notasi ilmiah, di mana sebuah angka direpresentasikan sebagai angka desimal yang dikalikan dengan pangkat 10 (seperti 3,14 x 1057). Notasi ilmiah seperti ini merupakan cara yang singkat untuk mengekspresikan bilangan yang sangat besar atau bilangan yang sangat kecil, dan juga mengizinkan jangkauan nilai yang sangat jauh sebelum dan sesudah titik desimalnya. Bilangan ini umumnya digunakan dalam merepresentasikan grafik dan kerja ilmiah, tetapi proses aritmatika terhadap bilangan floating-point jauh lebih rumit dan dapat diselesaikan dalam waktu yang lebih lama oleh CPU karena mungkin dapat menggunakan beberapa siklus detak CPU. Beberapa komputer menggunakan sebuah prosesor sendiri untuk menghitung bilangan floating-point yang disebut dengan FPU (disebut juga math co-processor) yang dapat bekerja secara paralel dengan CPU untuk mempercepat penghitungan bilangan floating-point. FPU saat ini menjadi standar dalam banyak komputer karena kebanyakan aplikasi saat ini banyak beroperasi menggunakan bilangan floating-point. • Memori virtual adalah sebuah mekanisme yang digunakan oleh aplikasi untuk menggunakan sebagian dari memori sekunder seolah-olah ia menggunakannya sebagai RAM fisik yang terinstal di dalam sebuah sistem. Mekanisme ini beroperasi dengan cara memindahkan beberapa kode yang tidak dibutuhkan ke sebuah berkas di dalam hard drive yang disebut dengan swap file, page file atau swap partition. Dalam sistem operasi berbasis Windows NT, terdapat sebuah komponen yang mengatur memori virtual, yakni Virtual Memory Manager (VMM). VMM dapat memetakan alamat-alamat virtual yang dimiliki oleh sebuah proses yang berjalan ke dalam page memori fisik di dalam komputer. Dengan cara begini, setiap proses pun dapat memperoleh memori virtual yang cukup agar dapat berjalan, dan yang terpenting adalah setiap proses tidak mengganggu memori yang sedang digunakan oleh proses lainnya. VMM menangani paging antara RAM dan page file, dengan memindahkan page dengan menggunakan sebuah cara yang disebut sebagai demand paging. Hasilnya, setiap aplikasi 32-bit pun dapat mengakses memori hingga 4 gigabyte (meskipun Windows hanya membatasi proses yang berjalan dalam modus pengguna hanya sebatas 2 GB saja). • Tembolok adalah mekanisme penyimpanan data sekunder berkecepatan tinggi yang digunakan untuk menyimpan data / instruksi yang sering diakses. Memori cache dimaksudkan untuk memberi kecepatan memori yang mendekati memori yang paling cepat yang bisa diperoleh, dan pada waktu yang sama menyediakan kapasitas memori yang besar dengan harga yang lebih murah dari jenis-jenis memori semikonduktor. • Konsep memori tembolok Cache berasal dari kata cash. Dari istilah tersebut cache adalah tempat menyembunyikan atau tempat menyimpan sementara. Sesuai definisi tersebut cache memori adalah tempat menympan data sementara. Cara ini dimaksudkan untuk meningkatkan transfer data dengan menyimpan data yang pernah diakses pada cache tersebut, sehingga apabila ada data yang ingin diakses adalah data yang sama maka maka akses akan dapat dilakukan lebih cepat.Cache memori ini adalah memori tipe SDRAM yang memiliki kapasitas terbatas namun memiliki kecepatan yang sangat tinggi dan harga yang lebih mahal dari memori utama. Cache memori ini terletak antara register dan RAM (memori utama) sehingga pemrosesan data tidak langsung mengacu pada memori utama. • Level Memori Tembolok Tembolok memori ada tiga level yaitu L1,L2 dan L3. Tembolok memori level 1 (L1) adalah tembolok memori yang terletak dalam prosesor (cache internal). Tembolok ini memiliki kecepatan akses paling tinggi dan harganya paling mahal. Ukuran memori berkembang mulai dari 8Kb, 64Kb dan 128Kb.Tembolok level 2 (L2) memiliki kapasitas yang lebih besar yaitu berkisar antara 256Kb sampai dengan 2Mb. Namun tembolok L2 ini memiliki kecepatan yang lebih rendah dari tembolok L1. Tembolok L2 terletak terpisah dengan prosesor atau disebut dengan cache eksternal. Sedangkan tembolok level 3 hanya dimiliki oleh prosesor yang memiliki unit lebih dari satu misalnya dualcore dan quadcore. Fungsinya adalah untuk mengontrol data yang masuk dari tembolok L2 dari masing-masing inti prosesor. • Cara Kerja Memori Tembolok Jika prosesor membutuhkan suatu data, pertama-tama ia akan mencarinya pada tembolok. Jika data ditemukan, prosesor akan langsung membacanya dengan delay yang sangat kecil. Tetapi jika data yang dicari tidak ditemukan,prosesor akan mencarinya pada RAM yang kecepatannya lebih rendah. Pada umumnya, tembolok dapat menyediakan data yang dibutuhkan oleh prosesor sehingga pengaruh kerja RAM yang lambat dapat dikurangi. Dengan cara ini maka memory bandwidth akan naik dan kerja prosesor menjadi lebih efisien. Selain itu kapasitas memori cache yang semakin besar juga akan meningkatkan kecepatan kerja komputer secara keseluruhan. Dua jenis tembolok yang sering digunakan dalam dunia komputer adalah memory caching dan disk caching. Implementasinya dapat berupa sebuah bagian khusus dari memori utama komputer atau sebuah media penyimpanan data khusus yang berkecepatan tinggi. Implementasi memory caching sering disebut sebagai memory cache dan tersusun dari memori komputer jenis SDRAM yang berkecepatan tinggi. Sedangkan implementasi disk caching menggunakan sebagian dari memori komputer. • Stuktur sistem tembolok Memori utama terdiri dari sampai dengan 2n word beralamat, dengan masing-masing word mempunyai n-bit alamat yang unik. Untuk keperluan pemetaan, memori ini dinggap terdiri dari sejumlah blok yang mempunyai panjang K word masing-masing bloknya. Dengan demikian, ada M = 2n/K blok. Cache terdiri dari C buah baris yang masing-masing mengandung K word, dan banyaknya baris jauh lebih sedikit dibandingkan dengan banyaknya blok memori utama (C << M). Di setiap saat, beberapa subset blok memori berada pada baris dalam cache. jika sebuah word di dalam blok memori dibaca, blok itu ditransfer ke salah satu baris cache. karena terdapat lebih banyak blok bila dibanding dengan baris, maka setiap baris tidak dapat menjadi unik dan permanen untuk dipersempahkan ke blok tertentu mana yang disimpan. Tag biasanya • Elemen rancangan cache Elemen-elemen penting dari rancangan memory cache adalah sebagai berikut: • Ukuran cache, disesuaikan dengan kebutuhan untuk membantu kerja memori. Semakin besar ukuran cache semakin lambat karena semakin banyak jumlah gerbang dalam pengalamatan cache. • Fungsi Pemetaan (Mapping), terdiri dari Pemetaan Langsung, Asosiatif, Asosiatif Set.Pemetaan langsung merupakan teknik yang paling sederhana, yaitu memetakkan masing-masing blok memori utama hanya ke sebuah saluran cache saja. Pemetaan asosiatif dapat mengatasi kekurangan pemetaan langsung dengan cara mengizinkan setiap blok memori utama untuk dimuatkan ke sembarang saluran cache.Hal ini menurut artikel dari Yulisdin Mukhlis, ST., MT • Algoritma Penggantian, terdiri dari Least Recently Used (LRU), First in First Out (FIFO), Least Frequently Used (LFU), Acak. Algoritma penggantian digunakan untuk menentukan blok mana yang harus dikeluarkan dari cache untuk menyiapkan tempat bagi blok baru. Ada 2 metode algoritma penggantian yaitu Write-through dan Write-back.Write-through adalah Cache dan memori utama diupdate secara bersamaan waktunya. Sedangkan Write-back melakukan update data di memori utama hanya pada saat word memori telah dimodifikasi dari cache. • Ukuran blok, blok-blok yang berukuran Iebih besar mengurangi jumlah blok yang menempati cache. Setiap pengambilan blok menindih isi cache yang lama, maka sejumlah kecil blok akan menyebabkan data menjadi tertindih setelah blok itu diambil. Dengan meningkatnya ukuran blok, maka jarak setiap word tambahan menjadi lebih jauh dari word yang diminta,sehingga menjadi lebih kecil kemungkinannya untuk di perlukan dalam waktu dekat.(Dikutip dari artilek milik Yulisdin "Mukhlis, ST., MT") • Line size, Jumlah cache, Satu atau dua dua tingkat, kesatuan atau terpisah Sumber wikipedia.com

Jumat, 09 Desember 2011

STRUKTUR DASAR DAN ORGANISASI KOMPUTER

STRUKTUR DASAR DAN ORGANISASI KOMPUTER 1.Struktur Dasar Komputer Suatu sistem komputer terdiri dari lima unit struktur dasar, yaitu: •Unit masukan (Input Unit) •Unit kontrol (Control Unit) •Unit logika dan aritmatika (Arithmetic & Logical Unit / ALU) •Unit memori/penyimpanan (Memory / Storage Unit) •Unit keluaran (Output Unit) Control Unit dan ALU membentuk suatu unit tersendiri yang disebut Central Processing Unit (CPU). Data diterima melalui Input Device dan dikirim ke Memory. Di dalam Memory data disimpan dan selanjutnya diproses di ALU. Hasil proses disimpan kembali ke Memory sebelum dikeluarkan melalui Output Device. Kendali dan koordinasi terhadap sistem ini dilakukan oleh Control Unit. Secara ringkas prinsip kerja komputer adalah Input – Proses – Output, yang dikenal dengan singkatan IPO. Fungsi Utama dari masing-masing Unit akan dijelaskan berikut ini: •Unit Masukan (Input Unit) Berfungsi untuk menerima masukan (input) kemudian membacanya dan diteruskan ke Memory / penyimpanan. Dalam hubungan ini dikenal istilah peralatan masukan (input device) yaitu alat penerima dan pembaca masukan serta media masukan yaitu perantaranya. •Unit Kontrol (Control Unit) Berfungsi untuk melaksanakan tugas pengawasan dan pengendalian seluruh sistem komputer. Ia berfungsi seperti pengatur rumah tangga komputer, memutuskan urutan operasi untuk seluruh sistem, membangkitkan dan mengendalikan sinyal-sinyal kontrol untuk menyesuaikan operasi-operasi dan arus data dari bus alamat (address bus) dan bus data (data bus), serta mengendalikan dan menafsirkan sinyal-sinyal kontrol pada bus kontrol (control bus) dari sistem komputer. Pengertian mengenai bus dapat dilihat di bagian bawah halaman ini. •Unit Logika & Aritmatika (Arithmetical & Logical Unit) Berfungsi untuk melaksanakan pekerjaan perhitungan atau aritmatika & logika seperti menambah, mengurangi, mengalikan, membagi dan memangkatkan. Selain itu juga melaksanakan pekerjaan seperti pemindahan data, penyatuan data, pemilihan data, membandingkan data, dll, sehingga ALU merupakan bagian inti dari suatu sistem komputer. Pada beberapa sistem komputer untuk memperingan dan membantu tugas ALU dari CPU ini diberi suatu peralatan tambahan yang disebut coprocessor sehingga khususnya proses perhitungan serta pelaksanaan pekerjaan pada umumnya menjadi lebih cepat. Pengertian mengenai coprocessor dapat dilihat di bagian bawah halaman ini. •Unit Memori / Penyimpan (Memory / Storage unit) Berfungsi untuk menampung data/program yang diterima dari unit masukan sebelum diolah oleh CPU dan juga menerima data setelah diolah oleh CPU yang selanjutnya diteruskan ke unit keluaran. Pada suatu sistem komputer terdapat dua macam memori, yang penamaannya tergantung pada apakah alat tersebut hanya dapat membaca atau dapat membaca dan menulis padanya. Bagian memori yang hanya dapat membaca tanpa bisa menulis padanya disebut ROM (Read Only Memory), sedangkan bagian memori yang dapat melaksanakan membaca dan menulis disebut RAM (Random Access Memory). •Unit Keluaran (Output Unit) Berfungsi untuk menerima hasil pengolahan data dari CPU melalui memori. Seperti halnya pada unit masukan maka pada unit keluaran dikenal juga istilah peralatan keluaran (Output device) dan media keluaran (Output media). 2.BUS Adalah sekelompok lintasan sinyal yang digunakan untuk menggerakkan bit-bit informasi dari satu tempat ke tempat lain, dikelompokkan menurut fungsinya Standar bus dari suatu sistem komputer adalah bus alamat (address bus), bus data (data bus) dan bus kontrol (control bus). Komputer menggunakan suatu bus atau saluran bus sebagaimana kendaraan bus yang mengangkut penumpang dari satu tempat ke tempat lain, maka bus komputer mengangkut data. Bus komputer menghubungkan CPU pada RAM dan periferal. Semua komputer menggunakan saluran busnya untuk maksud yang sama. 3.Coprocessor Coprocessor adalah Mikroprosesor tambahan (auxiliary processor) untuk membantu tugas dari prosesor utama (CPU). Sebenarnya latar belakang adanya coprocessor ini dimaksudkan untuk menutupi kelemahan dalam perhitungan matematika dan aritmatika pada prosesor Intel 8088. Tugas utamanya untuk melaksanakan perhitungan matematika dan aritmatika sehingga tidak menjadi beban prosesor Intel 8088. 4.Organisasi Komputer
Adalah bagian yang terkait erat dengan unit-unit operasional. contohnya teknologi hardware, perangkat antarmuka, teknologi memori, sistem memori, dan sinyal–sinyal kontrol. Tujuan matakuliah ini adalah mahasiswa bisa mengetahui konsep kerja dari komputer secara keseluruhan, untuk lebih detailnya akan di ulas pada matakuliah Arsitektur Komputer.

Perkembangan Dan Jenis-Jenis Komputer

PERKEMBANGAN DAN JENIS – JENIS KOMPUTER a.Perkembangan Komputer 1.Komputer Analog Komputer ini merupakan komputer yang digunakan untuk menerima sinyal analog, biasanya digunakan untuk melakukan pengecekan untuk data yang tidak berbentuk angka, karena data yang didapatkan adalah data yang bersifat gelombang. Komputer ini biasanya digunakan untuk mempresentasikan suatu keadaan. Sebagai contoh, komputer ini digunakan untuk melakukan pengecekan suhu, penghitung aliran BBM pada SPBU, mengukur kekuatan cahaya, dan lain-lain. Komputer ini banyak digunakan untuk kegiatan ilmiah. 2.Komputer Digital Komputer ini merupakan komputer yang kebanyakan yang kita kenal. Data yang diterimanya adalah data yang sudah berupa data digital. Sedangkan fungsinya digunakan untuk mengolah data yang bersifat kuantitatif dalam bentuk angka, huruf, tanda baca dan lain-lain. 3.Komputer Hybrid Komputer yang memiliki kemampuan dari komputer analog dan computer digital. Komputer jenis ini diperuntukkan untuk pengolahan data yang sifatnya baik kuantitatif maupun kualitatif, dengan perkataan lain data kuantitatif yang diolah menghasilkan data kualitatifnya dan sebaliknya. b.Komputer Berdasarkan Procesornya •Microcontroller Microcontroller memiliki semua peralatan sebagai sebuah komputer dalam satu chip. Peralatan tersebut diantaranya adalah: - Pemroses (processing) [baca: mengenal perangkat pemroses] - Memori - Input [baca: mengenal input device] dan output [baca: mengenal output device] Kadangkala pada microcontroller ini beberapa chip digabungkan dalam satu papan rangkaian. Perangkat ini sangat ideal untuk mengerjakan sesuatu yang bersifat khusus, sehingga aplikasi yang diisikan ke dalam komputer ini adalah aplikasi yang bersifat dedicated. Contoh alat ini diantaranya adalah komputer yang digunakan pada mobil untuk mengatur kestabilan mesin, alat untuk pengatur lampu lalu lintas. •Microcomputer Komputer ini khususnya digunakan untuk single-user, biasa disebut juga dengan komputer desktop atau komputer pribadi (personal computer). Komputer ini sudah dirancang sedemikian rupa untuk mampu berinteraksi dengan penggunanya. •Engineering Workstation Komputer ini lebih powerfull apabila dibandingkan dengan komputer pribadi, umumnya komputer ini digunakan untuk menjalankan aplikasi yang dipakai oleh para ahli teknik dalam melakukan perhitungan dan penyelesaian pekerjaannya. Aplikasi yang digunakan lebih cenderung kepada software yang banyak melakukan berbagai perhitungan, baik secara tiga dimensi, maupun secara matematika lainnya. Contoh aplikasi yang digunakan untuk komputer golongan ini adalah CAD (computer aided design) yang digunakan untuk melakukan perancangan gambar teknik. Super Komputer Komputer ini merupakan komputer paling bertenaga. Aplikasi yang digunakan biasanya lebih cenderung untuk penelitian ilmiah. Komputer ini biasanya memiliki beberapa prosesor sekaligus untuk menjalankan tugasnya. •Superkomputer biasanya unggul dalam kecepataan dari komputer biasa dengan menggunakan desain inovatif yang membuat mereka dapat melakukan banyak tugas secara paralel, dan juga detail sipil yang rumit. Komputer ini biasanya menspesialisasikan untuk penghitungn tertentu, biasanya penghitungan angka, dan dalam tugas umumnya tidak bagus hasilnya. Superkomputer digunakan untuk tugas penghitungan-intensif seperti prakiraan cuaca, riset iklim (termasuk riset pemanasan global, pemodelan molekul, simulasi fisik (seperti simulasi kapal terbang dalam terowongan angin, simulasi peledakan senjata nuklir, dan riset fusi nuklir), analisikrip, dll. Militer dan agensi sains salah satu pengguna utama superkomputer. •Mainframe Mainframe dapat melayani ratusan penggunanya pada saat yang bersamaan. Komputer ini mirip dengan minicomputer namun lebih besar dan lebih mahal. Penggunaannya umumnya untuk pengolahan data dari suatu divisi atau perusahaan besar, yang membutuhkan pengolahan yang cukup berat. •Minicomputer Komputer mainframe sangat mahal dan hanya perusahaan besar yang mampu menggunakannya. Untuk membuat komputasi lebih tersedia, dibuat jenis komputer yang lebih kecil dari mainframe yang disebut dengan minicomputer, yang dikembangkan sejak tahun 60-an. Komputer jenis ini digunakan lebih luas daripada mainframe, karena alasan untuk mendapatkan yang tidak lebih mahal dari mainframe, tapi lebih mudah dalam pengoperasian dan pemeliharaan. Sekarang ini istilah minicomputer disamakan dengan server, karena peran utamanya adalah mengkoordinasi suatu jaringan komputer. •Personal Computer (PC) Personal Computer atau PC adalah suatu perangkat komputer yang ditujukan untuk satu pengguna. Perangkatnya terdiri atas CPU, keyboard, monitor, dan mouse. Perangkat-perangkat tersebut dapat diringkas dalam satu meja, tidak terlalu banyak membutuhkan tempat. Komputer jenis ini paling banyak digunakan di berbagai tempat, seperti rumah, sekolah, kantor, dan sebagainya. c.Jenis Komputer Berdasarkan Fisiknya •Tower Tower biasanya ditaruh di samping atau di bawah meja karena ukurannya yang relatif besar, sehingga memenuhi meja. Komputer ini banyak memiliki ruang yang bisa dipakai untuk tempat memasang card tambahan, sehingga bisa ditambahkan dengan berbagai perangkat tambahan. •Desktop Desktop adalah komputer pribadi yang ditujukan untuk penggunaan secara umum di satu lokasi yang berlawanan dengan komputer jinjing atau komputer portabel. Periferal-periferal Desktop seperti tampilan komputer, CPU, dan papan ketik terpisah satu sama lain dan relatif berukuran besar (juga berlawanan dengan periferal pada komputer jinjing yang terintegrasi dan berukuran kecil). Komputer jenis ini dirancang untuk diletakkan dan digunakan di atas meja di rumah atau kantor. Desktop merupakan komputer yang paling terjangkau dan paling umum digunakan. •Portable Portable adalah ukuran komputer yang lebih kecil sehingga mudah dibawa dengan kemampuan yang sama atau lebih powerful. Yang termasuk dalam jenis portable computer adalah Notebook, Laptop, dan handheld computer. Keuntungan utama penggunaan portable computer adalah tidak harus digunakannya pada tempat yang sama sepanjang waktu, karena komputer jenis ini mudah dibawa kemana saja. •Komputer Notebook Komputer Notebook cukup muat untuk dimasukkan dalam tas dan dapat dijalankan dengan battery. Dapat juga dihubungkan dengan modem sehingga dapat mengakses LAN atau Internet, Handheld computer didesain untuk dapat diintegrasikan dengan sistem desktop, sehingga peralatan ini dapat dengan mudah mengambil data dan berkomunikasi lewat sambungan telpon. Notebook Notebook adalah komputer bergerak yang berukuran relatif kecil dan ringan, beratnya berkisar dari 1-6 kg, tergantung ukuran, bahan, dan spesifikasi laptop tersebut. Sumber daya komputer jinjing berasal dari baterai atau adaptor A/C yang dapat digunakan untuk mengisi ulang baterai dan menyalakan laptop itu sendiri. Baterai laptop pada umumnya dapat bertahan sekitar 1 hingga 6 jam sebelum akhirnya habis, tergantung dari cara pemakaian, spesifikasi, dan ukuran baterai. Sebagai komputer pribadi, laptop memiliki fungsi yang sama dengan komputer destop pada umumnya. Komponen yang terdapat di dalamnya sama persis dengan komponen pada destop, hanya saja ukurannya diperkecil, dijadikan lebih ringan, lebih tidak panas, dan lebih hemat daya. Komputer jinjing kebanyakan menggunakan layar LCD (Liquid Crystal Display) berukuran 10 inci hingga 17 inci tergantung dari ukuran laptop itu sendiri. Selain itu, papan ketik yang terdapat pada laptop juga kadang-kadang dilengkapi dengan papan sentuh yang berfungsi sebagai “pengganti” tetikus. Papan ketik dan tetikus tambahan dapat dipasang melalui soket USB maupun PS/2 jika tersedia. Berbeda dengan komputer destop, komputer jinjing memiliki komponen pendukung yang didesain secara khusus untuk mengakomodasi sifat komputer jinjing yang portabel. Sifat utama yang dimiliki oleh komponen penyusun laptop adalah ukuran yang kecil, hemat konsumsi energi, dan efisien. Komputer jinjing biasanya berharga lebih mahal, tergantung dari merek dan spesifikasi komponen penyusunnya, walaupun demikian harga komputer jinjing pun semakin mendekati destop seiring dengan semakin tingginya tingkat permintaan konsumen. •Subnotebook Ukuran subnotebook berada diantara notebook dan palmtop. Ukuran subnotebook ini bisa lebih kecil dari laptop karena pada komputer jenis ini ada sebagian perangkat yang tidak dipasang. •Palmtop Palmtop adalah komputer yang bisa digenggam. Ukurannya sangat kecil jika dibandingkan dengan komputer lainnya. Komputer jenis ini juga sering disebut dengan handheld computer, Karena bisa digenggam tangan. d.Komputer Berdasarkan Penggunaannya •Special Purpose Computer Special purpose computer berarti komputer untuk keperluan khusus. Komputer ini dirancang hanya untuk menyelesaikan suatu masalah tertentu. Perangkat yang ada pada komputer ini, baik komponen input, output, pemroses serta softwarenya telah dirancang untuk keperluan tersebut. Biasanya software yang mengendalikan proses sudah berada langsung pada sistem. Contoh dari Special Purpose Computer ini adalah komputer yang digunakan untuk kasir pada supermarket. •General Purpose Computer General Purpose Computer merupakan komputer yang dibuat untuk keperluan secara umum, sehingga komputer tersebut dapat digunakan untuk mengerjakan berbagai macam pekerjaan sesuai dengan kemampuan dan usernya. Personal Computer merupakan salah satu contoh dari kategori ini. e.Komputer Berdasarkan Kemampuannya Berikut ini kategori komputer yang dilihat berdasarkan kemampuannya untuk memproses, baik dalam melayani user, pemrosesan aplikasi, dan kemampuan untuk melaksanakan tugas dalam banyak hal sekaligus pada saat bersamaan. •Small Scale Computer Komputer skala kecil, merupakan komputer yang memiliki kemampuan proses dalam jumlah kecil. Komputer yang termasuk ke dalam kategori ini adalah komputer desktop atau komputer pribadi yang umumnya digunakan oleh satu orang pada satu saat. •Medium Scale Computer Komputer untuk skala menengah. Komputer yang termasuk ke dalam kategori ini adalah komputer mini, yang biasanya melayani penggunanya pada dumb terminal . •Large Scale Computer Komputer untuk skala besar. Komputer yang termasuk ke dalam kategori ini adalah komputer mainframe. Pada mesin tersebut dapat diakses beramai-ramai, dan sudah dilengkapi dengan perangkat dan software yang lengkap. Penggunaannya pun adalah untuk pengolahan perhitungan dengan kemampuan yang cukup rumit untuk diselesaikan oleh komputer medium dan small.

Sabtu, 04 Juni 2011

Variabel Memori, Array , Dan Argumentasi

Variabel Memori
Adalah sama dengan bahasa pemrograman lain. Sebuah tempat untuk menyimpan nilai. Variabel mungkin jenis yang berbeda, termasuk logis,, tanggal string numerik.

Array
Adalah pengaturan sistematis dari obyek, biasanya dalam baris dan kolom. Serta serangkaian unsur-unsur dari jenis yang sama ditempatkan di lokasi memori yang berdekatan yang dapat secara individual direferensikan dengan menambahkan indeks unik pengenal.
Itu berarti bahwa, misalnya, kita dapat menyimpan 5 nilai bertipe int dalam array tanpa harus mendeklarasikan 5 variabel yang berbeda, masing-masing dengan identifier yang berbeda. Daripada itu, menggunakan array, kita dapat menyimpan 5 nilai yang berbeda dari jenis yang sama, int misalnya, dengan identifikasi unik.
Umumnya, koleksi item data yang dapat dipilih oleh indeks dihitung pada saat run-time, termasuk:
Array struktur data
Pengaturan barang di spasi alamat yang sama di memori komputer
Array tipe data
Di gunakan dalam bahasa pemrograman untuk menentukan variabel yang dapat diindeks
Array asosiatif
Struktur model abstrak data yang generalizes indeks array untuk sewenang-wenang atau berbagai jenis di atas, seperti
Bit array atau vektor bit
Array dinamis , dialokasikan pada waktu berjalan
Paralel array catatan, dengan setiap bidang disimpan sebagai array terpisah
Jarang array , dengan unsur-unsur yang paling dihilangkan, untuk menyimpan matriks tipis
Variable-length array
Bergerigi array , dimana memiliki panjang baris yang berbeda secara individual atau terkait berbagai konsep:
Array prosesor , komputer untuk mengolah data array (jangan dikelirukan dengan array processor)
Array pemrograman , menggunakan notasi aljabar matriks dalam program (tidak sama dengan pengolahan array)
Array mengiris , ekstraksi sub-array dari array atau juga:
Global Array , perpustakaan untuk pemrosesan paralel
Intel Array Visualizer , sepotong perangkat lunak grafis ilmiah
Inisialisasi array.
Ketika mendeklarasikan array regular dari lingkup lokal (dalam satu fungsi, misalnya), jika kita tidak menentukan lain, unsur-unsur yang tidak akan diinisialisasi ke nilai default, sehingga konten mereka akan belum ditentukan sampai kita menyimpan beberapa nilai di dalamnya. Elemen-elemen array global dan statis, di sisi lain, secara otomatis diinisialisasi dengan nilai standar, yang untuk semua jenis fundamental ini berarti mereka penuh dengan nol.

Mengakses nilai array.
Dalam setiap titik di mana sebuah program array terlihat, kita dapat mengakses nilai dari setiap elemen secara sendiri seolah-olah itu adalah variabel normal, sehingga bisa baik membaca dan memodifikasi nilainya. Formatnya adalah yang sederhana seperti:
Nama [indeks
Berikut contoh sebelumnya di mana billy memiliki 5 elemen dan masing-masing unsur adalah bertipe int.

Variabel Argumentasi


Mungkin Anda ingin memiliki fungsi yang akan menerima sejumlah nilai dan kemudian kembali rata-rata. Anda tidak tahu berapa banyak argumen akan dilewatkan ke fungsi. Salah satu cara Anda bisa membuat fungsi akan menerima pointer ke array. Cara lain adalah dengan menulis fungsi yang dapat mengambil sejumlah argumen. Jadi anda bisa menulis avg (4, 12,2, 23,3, 33,3, 12.1), atau Anda bisa menulis avg (2, 2.3, 34.4); Beberapa fungsi perpustakaan dapat menerima daftar variabel argumen (seperti printf terhormat).
Untuk menggunakan fungsi dengan jumlah variabel argumen, atau lebih tepatnya, fungsi tanpa nomor set argumen, Anda akan menggunakan file header cstdarg. Ada empat bagian yang dibutuhkan: va_list, yang menyimpan daftar argumen, va_start, yang menginisialisasi daftar, va_arg, yang mengembalikan argumen berikutnya dalam daftar, dan va_end, yang membersihkan daftar argumen variabel. Setiap kali fungsi dinyatakan untuk memiliki jumlah tak tentu argumen, di tempat argumen terakhir Anda harus menempatkan suatu ellipsis (yang terlihat seperti'...'), begitu, a_function int (int x, ...); akan memberitahu compiler fungsi harus menerima namun banyak argumen bahwa programmer menggunakan, asalkan sama dengan setidaknya satu, yang menjadi yang pertama, x.

va_list adalah seperti variabel lain. Misalnya,

va_list a_list;
va_start adalah makro yang menerima dua argumen, sebuah va_list dan nama variabel yang langsung mendahului elipsis yang (...). Jadi, dalam a_function fungsi, untuk menginisialisasi a_list dengan va_start, Anda akan menulis va_start (a_list, x);

va_arg mengambil va_list dan jenis variabel, dan mengembalikan argumen berikutnya dalam daftar dalam bentuk apa pun jenis variabel itu diberitahu. Kemudian bergerak ke bawah daftar untuk argumen berikutnya. Sebagai contoh, va_arg (a_list, ganda) akan mengembalikan argumen selanjutnya, dengan asumsi itu ada, dalam bentuk ganda. Kali berikutnya itu disebut, itu akan mengembalikan argumen berikut nomor kembali terakhir, jika ada.

Untuk menunjukkan bagaimana masing-masing dari karya-karya bagian, ambil fungsi contoh:

# Include
# Include

using namespace std;

ganda rata-rata (int num, ...)
{
va_list argumen; / / tempat A untuk menyimpan daftar argumen
double sum = 0;

va_start (argumen, num); / / Inisialisasi argumen untuk menyimpan semua nilai setelah num
for (int x = 0; x jumlah + = va_arg (argumen, double); / / Menambahkan nilai berikutnya dalam daftar argumen untuk penjumlahan.
va_end (argumen); / / Membersihkan daftar

return sum / num; / / Mengembalikan beberapa angka (typecast mencegah pemotongan)
}
int main ()
{
cout < cout < }
Ini tidak selalu merupakan ide yang baik untuk menggunakan daftar argumen variabel sepanjang waktu, karena potensi ada untuk asumsi nilai adalah satu jenis, ketika sedang pada kenyataannya lain, seperti pointer null yang dianggap integer. Akibatnya, daftar argumen variabel harus digunakan hemat.

Selasa, 10 Mei 2011

Algoritma Binary Search

Algoritma Binary Search


Jika kita mempunyai sebuah file dari record-record yang telah dijalankan, kita dapat melanjutkan menghapuskan memory pemeriksaan yang diperlukan untuk mendapatkan kembali sebuah record yang telah dipakai oleh suatu teknik binary search. Suatu binary search dibandingkan dengan kunci dari pencarian record dengan record tengah dari sebuah file. Kemudian masing-masing pencarian record yang telah ditempatkan atau setengah dari file yang telah dihilangkan dengan pertimbangan yang lebih lanjut. Dalam kasus yang sebelumnya, proses pembandingan dari record tengah dilanjutkan dalam record-record selanjutnya. Jika kita harus menghilangkan bagian atas dari sebuah file termasuk record yang telah dibandingkan berlawanan. Selanjutnya jika kita harus menghilangkan bagian bawah dari sebuah file termasuk record yang telah dibandingkan berlawanan. Dalam pengulangan proses dari pembandingan berlawanan dari record tengah, kita akhirnya akan menempatkan record yang kita inginkan atau menentukan bahwa itu tidak ada dalam file ketika tidak ada record-record selanjutnya.

Pencarian Biner (Binary Search) dilakukan untuk :
1. memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
2. Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
3. Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.

Menemukan nilai dalam urutan diurutkan
Dalam bentuk yang paling sederhana, pencarian biner digunakan untuk cepat menemukan nilai dalam urutan diurutkan (pertimbangkan berurutan array biasa untuk sekarang). Kami akan menelepon nilai mencari nilai target untuk kejelasan. pencarian biner mempertahankan subsequence berdekatan dari urutan mulai dimana nilai target pasti berada. Ini disebut ruang pencarian. Ruang pencarian awalnya adalah seluruh urutan. Pada setiap langkah, algoritma membandingkan nilai rata-rata di ruang pencarian dengan nilai target. Berdasarkan perbandingan dan karena urutan diurutkan, kemudian dapat menghilangkan setengah dari ruang pencarian. Dengan melakukan ini berulang kali, akhirnya akan ditinggalkan dengan ruang pencarian yang terdiri dari elemen tunggal, nilai target.

Sebagai contoh, perhatikan urutan berikut bilangan bulat diurutkan dalam urutan dan mengatakan kami sedang mencari nomor 55:
0 5 13 19 22 41 55 68 72 81 98



Kami tertarik pada lokasi nilai target dalam urutan jadi kita akan mewakili ruang pencarian sebagai indeks ke dalam urutan. Awalnya, ruang pencarian berisi indeks 1 sampai 11. Karena ruang pencarian benar-benar interval, itu hanya cukup untuk menyimpan dua nomor, indeks rendah dan tinggi. Seperti dijelaskan di atas, kita sekarang memilih nilai tengah, yang adalah nilai pada indeks 6 (titik tengah antara 1 dan 11): nilai ini adalah 41 dan itu lebih kecil dari nilai target. Dari ini kita tidak hanya menyimpulkan bahwa elemen pada indeks 6 bukanlah nilai target, tetapi juga bahwa tidak ada elemen pada indeks antara 1 dan 5 bisa menjadi nilai target, karena semua elemen di indeks ini lebih kecil dari 41, yang lebih kecil dari nilai target. Hal ini membawa ruang pencarian ke indeks 7 sampai 11:
55 68 72 81 98



Berjalan dengan cara yang sama, kita memotong paruh kedua ruang pencarian dan yang tersisa dengan:
55 68



Tergantung pada bagaimana kita memilih median bahkan jumlah elemen kami baik akan menemukan 55 pada langkah berikutnya atau memenggal 68 untuk mendapatkan ruang pencarian hanya satu elemen. Either way, kita menyimpulkan bahwa indeks dimana nilai target terletak adalah 7.

Jika nilai target tidak hadir dalam urutan, pencarian biner akan mengosongkan ruang pencarian seluruhnya. Kondisi ini mudah untuk memeriksa dan menangani. Berikut adalah beberapa kode untuk pergi dengan deskripsi:
binary_search (A, target): lo = 1, hi = size (A) sedangkan lo <= hi: pertengahan = lo + (hi-lo) / 2 jika A target == [pertengahan]: kembali pertengahan lain jika A pertengahan [ ] y x. Properti ini adalah apa yang kita gunakan ketika kita membuang paruh kedua ruang pencarian. Hal ini setara dengan mengatakan bahwa p ¬ (x) menyiratkan ¬ p (y) untuk semua y x atau bahwa ¬ p (x) menyiratkan ¬ p (y) untuk semua
Ketika domain predikat adalah bilangan bulat, itu sudah cukup untuk membuktikan bahwa p (x) menyiratkan p (x +1) atau yang p ¬ (x) menyiratkan ¬ p (x-1), sisanya kemudian diikuti dengan induksi.

Kedua bagian yang paling sering interleaved: ketika kita berpikir masalah bisa diselesaikan dengan pencarian biner, kami bertujuan untuk merancang predikat sehingga memenuhi kondisi dalam teorema utama.

Orang mungkin bertanya-tanya mengapa kita memilih untuk menggunakan abstraksi ini daripada algoritma sederhana yang tampak kami telah digunakan sejauh ini. Hal ini karena banyak masalah tidak dapat dimodelkan sebagai mencari nilai tertentu, tetapi mungkin untuk mendefinisikan dan mengevaluasi predikat seperti "Apakah ada tugas yang biaya x atau kurang?", Ketika kita sedang mencari beberapa jenis penugasan dengan biaya terendah. Misalnya, masalah perjalanan salesman biasa (TSP) terlihat untuk perjalanan putaran termurah yang dilihat setiap kota tepat satu kali. Di sini, nilai target tidak didefinisikan seperti itu, tapi kita dapat mendefinisikan sebuah predikat "Apakah ada pulang-pergi yang biaya x atau kurang?" Dan kemudian menerapkan pencarian biner untuk menemukan terkecil x yang memenuhi predikat. Ini disebut mengurangi masalah asli untuk suatu keputusan (ya / tidak) masalah. Sayangnya, kita tahu tidak ada cara efisien mengevaluasi ini predikat tertentu dan sehingga masalah TSP tidak mudah diselesaikan dengan pencarian biner, tapi masalah optimasi banyak.

Mari kita sekarang mengkonversi biner pencarian sederhana pada array diurutkan diuraikan dalam pendahuluan ini definisi abstrak. Pertama, mari kita rephrase masalah sebagai: "A array dan target, nilai return indeks yang pertama dalam elemen A sama dengan atau lebih besar dari target. Nilai Mengingat" Kebetulan, ini lebih atau kurang bagaimana lower_bound berperilaku di C + +.

Kami ingin mencari index dari nilai target, sehingga setiap indeks ke array adalah solusi kandidat. Pencarian ruang S adalah himpunan semua solusi calon, sehingga interval yang mengandung semua indeks. Pertimbangkan predikat "Apakah A [x] lebih besar dari atau sama dengan nilai target?". Jika kita adalah untuk menemukan yang pertama x yang predikatnya kata ya, kita akan mendapatkan apa yang memutuskan kami cari di paragraf sebelumnya.

Kondisi dalam teorema utama puas karena array diurutkan dalam urutan menaik: jika A [x] lebih besar dari atau sama dengan nilai target, semua elemen setelah itu yang pasti juga lebih besar dari atau sama dengan nilai target.

Jika kita mengambil urutan sampel dari sebelumnya:
0 5 13 19 22 41 55 68 72 81 98



Dengan ruang pencarian (indeks):
1 2 3 4 5 6 7 8 9 10 11



Dan menerapkan predikat kami (dengan nilai target 55) untuk itu kita mendapatkan:
tidak ada tidak ada tidak ada tidak ada tidak ada tidak ada ya ya ya ya ya



Ini merupakan rangkaian ada jawaban yang diikuti oleh serangkaian jawaban ya, karena kami mengharapkan. Perhatikan bagaimana indeks 7 (dimana nilai target terletak) adalah pertama yang menghasilkan predikat ya, jadi ini adalah apa pencarian biner kita akan menemukan.

Melaksanakan algoritma diskrit
Satu hal penting yang perlu diingat sebelum mulai kode untuk menetap pada apa dua angka Anda menjaga (batas bawah dan atas) berarti. Jawaban mungkin adalah suatu interval tertutup yang pasti berisi pertama x yang p (x) benar. Semua kode Anda kemudian harus diarahkan untuk mempertahankan invarian ini: ia memberitahu Anda bagaimana benar memindahkan batas, yang merupakan tempat bug dapat dengan mudah menemukan jalan dalam kode Anda, jika Anda tidak hati-hati.

Hal lain yang harus berhati-hati dengan adalah bagaimana tinggi untuk mengatur batas. Dengan "tinggi" Saya benar-benar berarti "lebar" karena ada dua batas perlu khawatir. Setiap sehingga sering terjadi bahwa programmer menyimpulkan selama coding bahwa batas-batas ia mengatur yang cukup luas, hanya untuk menemukan-balik selama istirahat (ketika itu sudah terlambat). Sayangnya, sedikit membantu saran dapat diberikan di sini selain untuk selalu double dan triple-memeriksa batasan Anda! Juga, karena waktu eksekusi meningkat logaritmis dengan batas-batas, Anda selalu dapat mengatur mereka lebih tinggi, asalkan tidak melanggar evaluasi predikat. Jauhkan mata Anda keluar untuk kesalahan overflow di sekitar, terutama dalam menghitung median.

Sekarang kita akhirnya sampai ke kode yang mengimplementasikan pencarian biner seperti yang dijelaskan dalam hal ini dan bagian sebelumnya:
binary_search (lo, hi, p):
sedangkan pertengahan = + lo (hi-lo) / 2
jika p (pertengahan) == benar:
hi = pertengahan
lain:
lo = mid +1

jika p (lo) == false:
mengeluh / / p (x) adalah salah untuk semua x dalam S!

kembali lo / / lo adalah yang paling x yang p (x) benar
Dua garis penting yang hi = mid dan lo = mid +1. Ketika p (pertengahan) benar, kita dapat membuang paruh kedua ruang pencarian, karena predikat tersebut benar untuk semua elemen di dalamnya (oleh teorema utama). Namun, kita tidak bisa membuang pertengahan sendiri, karena mungkin menjadi elemen pertama yang p benar. Inilah sebabnya mengapa memindahkan batas atas hingga pertengahan adalah sebagai agresif bisa kita lakukan tanpa memperkenalkan bug.

Dalam nada yang sama, jika p (pertengahan) adalah palsu, kita dapat membuang paruh pertama ruang pencarian, tapi kali ini termasuk pertengahan. P (pertengahan) adalah salah sehingga kita tidak perlu di ruang pencarian kami. Hal ini secara efektif berarti kita dapat memindahkan batas bawah hingga pertengahan +1.

Jika kita ingin menemukan terakhir x yang p (x) adalah palsu, kami akan merancang (menggunakan alasan yang sama seperti di atas) sesuatu seperti:
/ / Peringatan: ada bug jahat dalam potongan ini!
binary_search (lo, hi, p):
sedangkan pertengahan = lo + (hi-lo) / 2 / / catatan: divisi memotong
jika p (pertengahan) == benar:
hi = pertengahan 1
lain:
lo = pertengahan

jika p (lo) == benar:
mengeluh / / p (x) benar untuk semua x dalam S!

kembali lo / / lo adalah yang terbesar x p (x) adalah palsu
Anda dapat memverifikasi bahwa ini memenuhi kondisi kami bahwa unsur kita cari selalu hadir dalam interval (lo, hi). Namun, ada masalah lain. Pertimbangkan apa yang terjadi ketika Anda menjalankan kode ini pada beberapa ruang pencarian yang memberi predikat:
tidak ada ya
Kode akan terjebak dalam satu lingkaran. Selalu akan memilih elemen pertama sebagai pertengahan, tetapi kemudian tidak akan memindahkan batas bawah karena ingin menjaga pencari ruang di no. Solusinya adalah mengubah pertengahan = lo + (hi-lo) / 2 sampai pertengahan = lo + (hi-lo +1) / 2, yaitu sehingga putaran Facebook bukannya turun. Ada cara lain untuk mendapatkan sekitar masalah, tetapi yang satu ini mungkin merupakan terbersih. Tapi ingatlah untuk selalu menguji kode Anda pada-elemen dua set mana predikat salah untuk elemen pertama dan benar untuk yang kedua.

Anda juga mungkin bertanya-tanya seperti mengapa pertengahan dihitung menggunakan pertengahan = lo + (hi-lo) / 2 bukannya pertengahan biasa = (lo + hi) / 2. Hal ini untuk menghindari bug lain pembulatan potensial: dalam kasus pertama, kita ingin divisi untuk selalu putaran bawah, menuju batas bawah. Tapi divisi memotong, jadi ketika lo + hi akan negatif, hal itu akan mulai pembulatan ke arah yang lebih tinggi terikat. Coding perhitungan cara ini memastikan bahwa jumlah dibagi selalu positif dan karenanya selalu babak seperti yang kita inginkan. Meskipun bug tersebut tidak muncul ketika ruang pencarian hanya terdiri dari bilangan bulat positif atau bilangan real, saya telah memutuskan untuk kode dengan cara ini seluruh artikel untuk konsistensi.

Real nomor
pencarian biner juga dapat digunakan pada fungsi monoton yang domain adalah himpunan bilangan real. Melaksanakan pencarian biner pada real biasanya lebih mudah dari pada bilangan bulat, karena Anda tidak perlu diwaspadai bagaimana cara memindahkan batas:
binary_search (lo, hi, p):
sementara kita memilih untuk tidak berakhir:
pertengahan = + lo (hi-lo) / 2
jika p (pertengahan) == benar:
hi = pertengahan
lain:
lo = pertengahan

kembali lo / / lo dekat dengan perbatasan antara tidak dan ya
Karena himpunan bilangan real yang padat, harus jelas bahwa kita biasanya tidak akan dapat menemukan nilai target yang tepat. Namun, kita dengan cepat dapat menemukan beberapa x sedemikian sehingga f (x) adalah dalam beberapa toleransi perbatasan antara tidak dan ya. Kami memiliki dua cara untuk memutuskan kapan untuk mengakhiri: berakhir pada saat ruang pencarian semakin kecil dari beberapa yang telah ditentukan terikat (katakanlah 10 -12) atau melakukan sejumlah tetap iterasi. Pada TopCoder, Anda terbaik adalah dengan hanya menggunakan beberapa ratus iterasi, ini akan memberikan presisi terbaik tanpa berpikir terlalu banyak. 100 iterasi akan mengurangi ruang pencarian untuk sekitar 10 -30 dari ukuran awal, yang harus cukup untuk sebagian besar (jika tidak semua) masalah.

Jika Anda perlu lakukan sebagai sedikit iterasi mungkin, Anda dapat berakhir pada saat interval semakin kecil, tetapi cobalah untuk melakukan perbandingan relatif dari batas, bukan hanya salah satu yang mutlak. Alasan untuk ini adalah bahwa menggandakan pernah dapat memberikan Anda lebih dari 15 digit desimal presisi jadi jika ruang pencarian mengandung jumlah besar (katakan pada urutan miliar), Anda tidak pernah mendapatkan perbedaan mutlak kurang dari 10 -7.

Contoh
Pada titik ini saya akan menunjukkan bagaimana semua pembicaraan ini dapat digunakan untuk memecahkan masalah TopCoder. Untuk ini saya telah memilih masalah agak sulit, FairWorkload , yang merupakan divisi 1 tingkat 2 masalah dalam SRM 169.

Dalam masalah ini, sejumlah pekerja harus memeriksa sejumlah lemari arsip. Lemari tidak semua ukuran yang sama dan kita diberitahu untuk setiap kabinet berapa banyak folder di dalamnya. Kita diminta untuk mencari tugas sehingga setiap pekerja mendapat serangkaian berurutan kabinet harus melalui dan bahwa hal itu meminimalkan jumlah maksimum folder yang seorang pekerja harus melihat melalui.

Setelah mendapatkan akrab dengan masalah, sentuhan kreativitas diperlukan. Bayangkan bahwa kita memiliki jumlah yang tidak terbatas pekerja di pembuangan kami. Pengamatan penting adalah bahwa, untuk beberapa MAX nomor, kita dapat menghitung jumlah minimum pekerja diperlukan sehingga setiap pekerja harus memeriksa tidak lebih dari folder MAX (jika ini mungkin). Mari kita lihat bagaimana kita akan melakukannya. Beberapa pekerja perlu memeriksa kabinet pertama sehingga kami menetapkan pekerja apapun untuk itu. Namun, karena kabinet harus ditugaskan dalam urutan (pekerja tidak dapat memeriksa lemari 1 dan 3 tanpa memeriksa 2 juga), selalu optimal untuk menugaskannya untuk kabinet kedua juga, jika ini tidak membawanya ke atas batas kita memperkenalkan (MAX). Jika itu akan membawanya ke atas batas, kami menyimpulkan bahwa karyanya dilakukan dan menetapkan seorang pekerja baru ke kabinet kedua. Kami melanjutkan dengan cara yang sama sampai semua lemari telah ditetapkan dan menegaskan bahwa kita telah menggunakan jumlah minimum pekerja mungkin, dengan batas buatan kami memperkenalkan. Perhatikan di sini bahwa jumlah pekerja berbanding terbalik dengan MAX: semakin tinggi kita menetapkan batas kami, para pekerja lebih sedikit kita akan membutuhkan.

Sekarang, jika Anda pergi kembali dan hati-hati memeriksa apa yang kita minta dalam pernyataan masalah, Anda dapat melihat bahwa kita benar-benar diminta untuk MAX terkecil sehingga jumlah pekerja yang dibutuhkan adalah kurang dari atau sama dengan jumlah tenaga kerja yang tersedia . Dengan itu dalam pikiran, kita hampir selesai, kita hanya perlu menghubungkan titik-titik dan melihat bagaimana semua ini cocok dalam frame kita diletakkan untuk memecahkan masalah menggunakan pencarian biner.

Dengan masalah diulang sesuai dengan kebutuhan kita lebih baik, sekarang kita dapat memeriksa predikat Dapat menyebar beban kerja sehingga setiap pekerja harus memeriksa tidak lebih dari x folder, dengan jumlah tenaga kerja yang tersedia terbatas? Kita dapat menggunakan algoritma serakah digambarkan efisien mengevaluasi predikat untuk setiap x. Hal ini menyimpulkan bagian pertama dari membangun solusi pencarian biner, sekarang kita hanya perlu membuktikan bahwa kondisi dalam teorema utama puas. Tapi amati bahwa peningkatan x sebenarnya melemaskan batas pada beban kerja maksimal, sehingga kita hanya bisa memerlukan nomor yang sama pekerja atau kurang, tidak lebih. Jadi, jika predikat mengatakan ya untuk beberapa x, juga akan mengatakan ya untuk semua yang lebih besar x.

Untuk jelasnya, berikut adalah potongan STL-driven yang memecahkan masalah:
int getMostWork (vektor folder, pekerja int) {
int n = folders.size ();
int lo = * max_element (folders.begin (), folders.end ());
int hi = menumpuk (folders.begin (), folders.end (), 0);

while (lo int x = lo + (hi-lo) / 2;

int diperlukan current_load = 1, = 0;
for (int i = 0; i if (current_load + folder [i] <= x) {
/ / Pekerja saat ini dapat mengatasinya
current_load + = folder [i];
}
else {
/ / Menetapkan pekerja berikutnya
+ + Diperlukan;
current_load = map [i];
}
}

jika ( hi = x;
lain
lo = x +1;
}

kembali lo;
}
Perhatikan batas bawah dan atas dengan hati-hati dipilih: Anda bisa mengganti atas terikat dengan integer cukup besar, tetapi batas bawah tidak boleh kurang dari kabinet terbesar untuk menghindari situasi di mana sebuah lemari tunggal akan terlalu besar bagi pekerja apapun, kasus yang tidak akan benar ditangani oleh predikat. Alternatif akan mengatur batas bawah nol, kemudian menangani terlalu kecil x sebagai kasus khusus dalam predikat.

Untuk memverifikasi bahwa solusi tidak mengunci, saya menggunakan tidak kecil / ya misalnya dengan folder = {1,1} dan pekerja = 1.

Kompleksitas keseluruhan dari solusi adalah O (n log SIZE), dimana SIZE adalah ukuran ruang pencarian. Ini sangat cepat.

Seperti yang Anda lihat, kami menggunakan algoritma greedy untuk mengevaluasi predikat. Dalam masalah lain, mengevaluasi predikat bisa turun ke apapun dari ekspresi matematika sederhana untuk mencari pencocokan kardinalitas maksimum pada graf bipart.

Minggu, 03 April 2011

Spanning Tree

SPANING TREE


Sebuah pohon rentang dari graf adalah himpunan bagian dari tepi yang membentuk sebuah pohon (Skiena 1990, hal 227). Misalnya, mencakup pohon dari grafik siklus , berlian grafik , dan grafik lengkap diilustrasikan di atas.
Jumlah pohon mencakup nonidentical dari grafik sama untuk setiap kofaktor dari matriks derajat dari dikurangi matriks adjacency dari (Skiena 1990, hal 235). Hasil ini dikenal sebagai teorema pohon matriks . Sebuah pohon berisi pohon rentang yang unik, sebuah grafik siklus mengandung mencakup pohon, dan sebuah grafik yang lengkap berisi mencakup pohon (Trent 1954; Skiena 1990, hal 236). Sebuah hitungan pohon rentang dari grafik dapat ditemukan dengan menggunakan perintah NumberOfSpanningTrees [ g ] pada Mathematica paketCombinatorica ` .

Contoh dari spaning tree antara lain:

Tutte polynomial
Adalah polinomial dalam dua variabel yang memainkan peran penting dalam teori graph , cabang dari matematika dan ilmu komputer teoritis . Ini didefinisikan untuk setiap graf tak berarah dan berisi informasi tentang bagaimana grafik tersambung.
Pentingnya Tutte polinomial T G berasal dari informasi yang berisi tentang G . Meskipun awalnya belajar di teori graph aljabar sebagai generalisasi dari menghitung masalah yang berkaitan dengan pewarnaan grafik dan tempat-nol aliran , terkenal mengandung beberapa spesialisasi dari ilmu-ilmu lain seperti polinomial Jones dari teori simpul dan fungsi partisi dari model Potts dari statistik fisika . Itu juga merupakan sumber dari beberapa pusat masalah komputasi dalam ilmu komputer teoritis .
Polinom Tutte memiliki beberapa definisi setara. Hal ini setara dengan Whitney polinomial pangkat , Tutte sendiri polinomial dwiwarna dan Fortuin-Kasteleyn's acak cluster model bawah transformasi sederhana. Ini pada dasarnya adalah sebuah fungsi pembangkit untuk jumlah set tepi ukuran yang diberikan dan komponen yang terhubung, dengan generalisasi segera matroids . Hal ini juga yang paling umum invarian grafikyang dapat didefinisikan oleh-kontraksi kambuh penghapusan.

Definisi dari Tutte polynomial.
Untuk graf tak berarah G = ( V , E ) orang dapat mendefinisikan polinomial Tutte sebagai

Di sini, c ( A ) menunjukkan jumlah komponen yang terhubung dari grafik ( V , A ) . Dalam definisi ini jelas bahwa T G baik-pasti dan polinomial dalam x dan y . Definisi yang sama dapat diberikan dengan menggunakan notasi berbeda sedikit dengan membiarkan r ( A ) = | V | - c ( A ) menunjukkan pada peringkat grafik ( V , A ) . Kemudian peringkat Whitney fungsi pembangkit didefinisikan sebagai

dua fungsi yang setara dengan perubahan sederhana variabel: T G ( x , y ) = R G ( x - 1, y - 1) . Tutte's dwiwarna polinomial Q G adalah hasil lain transformasi sederhana:
T G ( x , y ) = ( x - 1) - k ( G ) Q G ( x - 1, y - 1).
asli definisi's Tutte dari T G adalah setara tapi kurang mudah lain. Untuk tersambung G kita tentukan
T G ( x , y ) = Σ t i j x i y j ,
i , j
dimana t i j menunjukkan jumlah pohon rentang dari "aktivitas internal i dan kegiatan eksternal j . "
Definisi ketiga menggunakan-kontraksi kambuh penghapusan. Para tepi kontraksi G / u v dari graf G adalah graf yang diperoleh dengan menggabungkan simpul u dan v dan menghapus tepi u v .Kami menulis G - u v untuk grafik dimana tepi u v hanya dihapus. Kemudian polinomial Tutte didefinisikan oleh hubungan terulangnya
T G = T G - e + T G / e jika e bukan sebuah loop atau jembatan
dengan kasus dasar
T G ( x , y ) = x i y j jika G mengandung i jembatan dan j loop dan tidak ada sisi lainnya.
Terutama, T G = 1 jika G tidak berisi tepi.
Model cluster random dari mekanika statistik memberikan definisi lain setara. Polinom

setara dengan T G bawah transformasi
T G ( x , y ) = ( x - 1) - k ( E ) ( y - 1) - | V | Z G (( x - 1) ( y - 1), y - 1) .

Rabu, 30 Maret 2011

Linked List

Linked list adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array yang sangat besar(misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari seratus data, maka hal itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah salah satu struktur data yang mampu menutupi kelemahan tersebut.

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer.
-------- -------- --------
Mesin Data Data
-------- -------- --------
(kepala) ---> Pointer ---> Pointer --
-------- -------- --------

Programmer membaca data menyerupai kondektur yang ingin memeriksa karcis penumpang. Programmer menyusuri linked list melalui kepalanya, dan kemudian berlanjut ke gerbong (data) berikutnya, dan seterusnya sampai gerbong terakhir (biasanya ditandai dengan pointer menunjukkan alamat kosong (NULL)). Penyusuran data dilakukan secara satu persatu sehingga penyusuran data bekerja dengan keefektifan On. Dibandingkan array, ini merupakan kelemahan terbesar linked list. Pada array, apabilan programmer ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya. Sedangkan dengan linked list programmer harus menyusuri data sebanyak n terlebih dahulu.

Jenis – Jenis Linked List Ada 3 Macam Yaitu :

A Singly Linked List
Field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL. Node-node tersebut saling terhubung satu sama lain.
Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.
Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.
Deklarasi Node
typedef struct TNode{
int data;
TNode *next;
};

Penjelasan:


• Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode
• Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.
Pembuatan Single Linked List non Circular (2)
• Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta alokasi memorinya, kemudian node tersebut diisi data dan pointer nextnya ditunjuk ke NULL.
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;

B.Double Linked List
Adalah sebuah Linked List yang terdiri dari dua arah pointer, dengan node yang saling terhubung, namun kedua pointernya menunjuk ke NULL. Setiap node pada linked list mempunyai field yang berisi data dan pointer yang saling berhubungan dengan node yang lainnya.

GAMBARAN NODE Duble Linked List



C. Circular Linked List

Jumat, 11 Maret 2011

Teknik Sorting Dan Searcing

Sorting adalah sebuah proses merangkai benda dalam urutan tertentu dan/atau dalam himpunan yang berbeda, dan oleh karena itu dia memiliki dua arti umum yang berbeda:
1.pengurutan: merangkai benda yang sejenis, sekelas, dll, dalam urutan yang teratur,
2.kategorisasi: pengelompokan dan pemberian label kepada benda dengan sifat yang serupa.

Mensortir informasi atau data
Salah satu cara sorting yang penting adalah mengatur benda informasi dalam urutan alfabetik sesuai dengan hubungan penyusunan yang telah didefinisikan sebelumnya, misal ketika seseorang mensortir buku-buku di perpustakaan berdasarkan judul, subyek atau penulis (Biasanya diurutkan dalam urutan membesar).
Urutan yang dihasilkan dapat membesar atau mengecil, karena biasanya seluruh sorting adalah sorting angka. Sorting dalam ilmu komputer adalah salah satu subjek riset yang paling luas karena kebutuhan mempercepat operasi dalam ribuan atau jutaan data selama operasi pencarian; lihat algoritma sorting.
Tujuan utama mensortir informasi adalah untuk mengoptimalkan tugas tertentu. Pada umumnya, ada dua cara pengelompokan informasi: berdasarkan kategori, misal sebuah katalog belanja di mana barang disusun bersama di bawah judul seperti 'rumah', 'olah raga', 'pakaian wanita', dll. dan berdasarkan intensitas seperti harga, misal dari yang termurah sampai yang termahal.

Macam – macam teknik dalam sorthing:
•Straight Selection Sort. teknik sorting ini dibuat dengan cara melakukan pengecek'an 1 persatu, bila kita akan mengurutkan secara ascending maka kita lakukan pengecek'an nilai tempat yang pertama (index pertama pada array) bila lebih kecil daripada index berikutnya (index 1 dengan index 2, index 1 dengan index 3, ..... index 1 dengan index terakhi) maka kita lakukan pertukaran nilai pada array index tersebut. proses ini dilakukan terus menerus sampai pada pengecekan index terakhir - 1 dengan nidex terakhir.




•Selection Sort.Teknik sorting ini dibuat dengan cara melakukan pengecek'an 1 persatu, bila kita akan mengurutkan secara ascending maka kita lakukan pengecek'an nilai tempat yang pertama (index pertama pada array)kita bandingkan dengan semua nilai yang ada kita cari nilai minimalnya. lalu simpan index/ letak nilai minimum itu di temukan, setelah pengecekan selesai tukar index awal pengecekan dengan nilai minimum yang telah di simpan tadi. Proses ini dilakukan terus menerus sampai pada pengecekan index terakhir min 1 dengan index terakhir. beda dengan streith selection sort adalah dengan teknik ini melakukan pertukaran nilai lebih sedikit, hanya jumlah data - 1 pertukaran. jadi waktu untuk melakukan proses sorting lebih cepat.listing program (open in Inrternet eplorer only)

•Bubble Sort. Teknik ini dilakukan degan pola membawa nilai terbesar menjadi nilai index terakhir array. jadi sistem ini melakukan pengecekan nilai 1 dengan 2, lalu 2 dengan 3 samapai dengan data terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan pertukaran. proses ini dilakuan hingga jumlah data - 1. listing program (open in Inrternet eplorer only)

•Modified Bubble Sort. Teknik ini dilakukan degan pola membawa nilai terbesar menjadi nilai index terakhir array. Jadi sistem ini melakukan pengecekan nilai 1 dengan 2, lalu 2 dengan 3 samapai dengan data terakhir, bila nilai index yang lebih kecil lebih besar maka akan dilakukan pertukaran. proses ini dilakuan hingga jumlah data dikurangi 1 atau sampai program tidak melakukan pertukaran. jadi waktu untuk melakukan proses sorting lebih cepat.listing program.

Searching
Dalam pencarian data juga terdapat beberapa jenis algoritma, tujuan dari adanya banyak algoritma yang di temukan adalah karena memiliki keuntungan-keuntungan tersendiri, seperti lebih cepatnya bila mengolah data yang jumlahnya lebih dari juta data, ada yang lebih efisien dengan jumlah kurang dari jutaan. serta ada pula yang tidak perlu untuk mengurutkan data terlebih dahulu, tetapi memakan waktu lebih lama.

•Line Search. teknik searching ini dibuat dengan cara melakukan pengecek'an 1 persatu, yaitu antara data yang di cari dengan kumpulan data yang di miliki, Keuntungan metode ini adalah kita tidak perlu mengurutkan data yang ada, bila mencari data pada kumpulan data yang tidak urut hanya terdapat metode ini yang dapat di lakukan.

•Binnary Search. teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di urutkan, karena teknik ini melakukan pencarian dengan mencari data pada index yang tengah, apakah lebih besar/lebih kecil/sama dengan. bila hasil sama dengan maka nilai yang di cari telah di temukan. bila lebih kecil/lebih besar maka akan di buang setengah data dari yang salah, dan mencari dari indeks yang tengah dari sisanya. demikian samapi data ditemukan atau tidak di temukan.

•Fibonachi Search. Teknik ini hanya dapat digunakan hanya pada kumpulan data yang sudah di urutkan, karena teknik ini melakukan pencarian dengan mencari data melalui pola bilangan fibonachi. Bila pada binnary search pembandingnya adalah nilai pada index tengahnya jumlah data, pada fibonachi search berbeda yaitu: bilangan fibonachi, yang bilangan fibonachinya terdekat dengan jumlah data tetapi tidak lebih besar dari jumlah data yang akan di proses. Bilangan fibonachi itu di jumlahkan dengan batas paling awal data dikurangi 1. Contohnya: jumlah data yang akan di cari adalah 15, maka batas paling bawah adalah 1 dan batas paling akhir=15 dan index pembandingnya= 13(nilai awal + dijumlahkan Bilangan fibonachi - 1) karena bilangan fibonachi terdekat dengan 15 (data ke 1- data ke 15) adalah 13 (1,2,3,5,8,13,21,34.....), bila data yang di cari lebih besar dari bilangan indeks ke tengahnya maka. batas paling bawah= tetap, batas akhir nilai tengah-1, bila data yang dicari lebih kecil maka batas bawah = nilai tengah +1 dan batas akhir tetap, sedangkan nilai tengahnya memakai fungsi tadi.