Rabu, 07 Juni 2017

PARALLEL COMPUTATION (komputasi pararel)

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dll.
Hasil gambar untuk parallel computation wikipedia

  • Mesin paralel, Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara paralel !
  • GRID, merupakan pengembangan teknologi mesin paralel dengan memanfaatkan jaringan pita lebar di era dijital. Dengan adanya jaringan pita lebar, paralelisasi tidak hanya dilakukan antar komputer dalam satu jaringan, tetapi juga antar mesin paralel yang terpisah secara geografis.
  • Pemrograman Paralel,  teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi (distributed computing).

Motivasi
Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.

Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.
  • Peningkatan Kecepatan
Peningkatan kecepatan dapat diformulasikan dalam persamaan berikut ini

{\displaystyle S={\frac {T_{1}}{T_{j}}}} {\displaystyle S={\frac {T_{1}}{T_{j}}}}

Dimana {\displaystyle T_{1}} {\displaystyle T_{1}} adalah waktu yang dibutuhkan untuk menyelesaikan pekerjaan (program komputer) bila dijalankan dalam satu komputer. Dan {\displaystyle T_{j}} {\displaystyle T_{j}} adalah waktu yang dibutuhkan jika pekerjaan dikerjakan bersamaan oleh beberapa komputer.

Ada limitasi dalam usaha membuat suatu program komputer berjalan lebih efisien melalui peningkatan kecepatan, hukum yang menetapkan batasan ini dikenal sebagai Hukum Amdahl. Ide dari hukum amdahl ini adalah bahwa anda hanya akan bisa meningkatkan efisiensi program komputer anda, sebatas pada bagian tertentu dari program tersebut yang dapat di paralelkan. Sementara bagian yang memang harus dilaksanakan secara berurutan, akan menjadi penentu performa akhir.

Kembali ke analogi memasak tadi, bila anda harus menggunakan sarung tangan sebelum menyalakan kompor ataupun memotong bawang, maka waktu yang anda butuhkan untuk memakai sarung tangan ini adalah waktu serial, yang tidak dapat dihindari. Sementara waktu untuk memasak dan memotong bawang tadi adalah bagian yang bisa diparalelkan.
  • Hukum Amdahl, Telah dijelaskan bahwa dari {\displaystyle T_{1}} {\displaystyle T_{1}} (waktu yg dibutuhkan menjalankan pekerjaan dalam satu komputer) tadi, ada sebagian yg tidak bisa diparalelkan. Untuk menyatakan ini kita gunakan notasi {\displaystyle \alpha } {\displaystyle \alpha } dimana {\displaystyle 0\leq \alpha \leq 1} {\displaystyle 0\leq \alpha \leq 1} menunjukkan berapa bagian dari {\displaystyle T_{1}} {\displaystyle T_{1}} yang tidak bisa dijadikan paralel (atau bagian serial dari program ini).
Maka kita ketahui {\displaystyle \alpha *T_{1}} {\displaystyle \alpha *T_{1}} adalah waktu yg tidak akan terpengaruh oleh bertambahnya komputer yg digunakan (a).

Sisanya {\displaystyle (1-\alpha )*T_{1}} {\displaystyle (1-\alpha )*T_{1}} adalah waktu yang akan berkurang menjadi {\displaystyle {\frac {(1-\alpha )*T_{1}}{N}}} {\displaystyle {\frac {(1-\alpha )*T_{1}}{N}}} bila kita menggunakan N komputer tambahan {b) .

Sehingga waktu total yang dibutuhkan untuk menjalankan pekerjaan dalam N komputer adalah (a) + (b) alias :

{\displaystyle T_{N}=\alpha *T_{1}+{\frac {(1-\alpha )*T_{1}}{N}}} {\displaystyle T_{N}=\alpha *T_{1}+{\frac {(1-\alpha )*T_{1}}{N}}}
Peningkatan kecepatan yang kita peroleh dari persamaan ini adalah :

{\displaystyle S_{N}={\frac {T_{1}}{\alpha *T_{1}+{\frac {(1-\alpha )*T_{1}}{N}}}}} {\displaystyle S_{N}={\frac {T_{1}}{\alpha *T_{1}+{\frac {(1-\alpha )*T_{1}}{N}}}}}
Mungkin anda akan mendapati persamaan speed up yang terlihat berbeda tetapi pada dasarnya sama. Persamaan dibawah, bisa didapat dari persamaan di atas, dengan mengeliminasi komponen {\displaystyle T_{1}} {\displaystyle T_{1}} (pada bagian atas dan bawah persamaan), lalu mengatur N dan {\displaystyle \alpha } {\displaystyle \alpha }

{\displaystyle S_{N}={\frac {N}{1+\alpha (N-1)}}} {\displaystyle S_{N}={\frac {N}{1+\alpha (N-1)}}}
Bila anda cermati persamaan di atas, bisa dilihat bahwa jika kita menggunakan komputer yang amat banyak ( {\displaystyle N\rightarrow \infty } {\displaystyle N\rightarrow \infty }) komponen (b) akan dapat diabaikan, menyisakan persamaan :

{\displaystyle S_{N}={\frac {1}{\alpha }}} {\displaystyle S_{N}={\frac {1}{\alpha }}}
Inilah batas maksimum peningkatan kecepatan yang bisa dicapai menurut hukum Amdahl yaitu perbandingan terbalik dari seberapa banyak bagian serial dari suatu pekerjaan.

Dalam sistem terdistribusi dimana anda berusaha menggunakan lebih banyak prosesor untuk menyelesaikan masalah, akan ada imbal balik. Menggunakan komputer tambahan dari lokasi yang berbeda memberikan anda sumber komputasi baru, tetapi juga melibatkan biaya komunikasi tambahan, saat anda harus memberikan pekerjaan tersebut pada komputer yg terpisah.
  • Bahasa populer dalam Pemrograman Paralel
MPI Message Passing Interface, bahasa pemrograman dengan basis pertukaran pesan.
PVM Parallel Virtual machine.

Istilah-istilah dalam pemrograman paralel

  1. Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah-masalah yang bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal, karena tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai.
  2. Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data yang digunakan:
  3. SISD Single Instruction Single Datapath, ini prosesor tunggal, yang bukan paralel.
  4. SIMD Single Instruction Multiple Datapath, alur instruksi yang sama dijalankan terhadap banyak alur data yang berbeda. Alur instruksi di sini kalau tidak salah maksudnya ya program komputer itu. trus datapath itu paling ya inputnya, jadi inputnya lain-lain tetapi program yang digunakan sama.
  5. MIMD Multiple Instruction Multiple Datapath, alur instruksinya banyak, alur datanya juga banyak, tetapi masing-masing bisa berinteraksi.
  6. MISD Multiple Instruction Single Datapath, alur instruksinya banyak tetapi beroperasi pada data yang sama.
  • Perkembangan di Indonesia, Di Indonesia, usaha untuk membangun infrastruktur mesin paralel sudah dimulai sejak era 90-an, meski belum pada tahap serius dan permanen. Namun untuk pemrograman paralel sudah sejak awal menjadi satu mata-kuliah wajib di banyak perguruan tinggi terkait. Baru pada tahun 2005 dimulai pembuatan infrastruktur mesin paralel permanen, misalnya yang dikembangkan oleh Grup Fisika Teoritik dan Komputasi di P2 Fisika LIPI. Didorong oleh perkembangan pemrograman paralel yang lambat, terutama terkait dengan sumber daya manusia (SDM) yang menguasainya, mesin paralel LIPI ini kemudian dibuka untuk publik secara cuma-cuma dalam bentuk LIPI Public Cluster (LPC)[3]. Saat ini LPC telah dikembangkan lebih jauh menjadi gerbang komputasi GRID di Indonesia dengan kerjasama global menjadi IndoGRID.

Example parallel programming models

NameClass of interactionClass of decompositionExample implementations
Actor modelAsynchronous message passingTaskDErlangScalaSALSA
Bulk synchronous parallelShared memoryTaskApache GiraphApache HamaBSPlib
Communicating sequential processesSynchronous message passingTaskAdaOccamVerilogCSPGo
CircuitsMessage passingTaskVerilogVHDL
DataflowMessage passingTaskLustreTensorFlowApache Flink
FunctionalImplicitTaskConcurrent HaskellConcurrent ML
LogP machineSynchronous message passingNot specifiedNone
Parallel random access machineShared memoryDataCilkCUDAOpenMPThreading Building BlocksXMTC

SUMBER :
https://id.wikipedia.org/wiki/Komputasi_paralel
https://en.wikipedia.org/wiki/Parallel_programming_model

Rabu, 03 Mei 2017

CLIENT SERVER (PROGRAM JARINGAN)

  • Get IP
Listing Program :

import java.net.*;
public class getip {
public static void main(String args[]) throws Exception {
InetAddress host = null;
host = InetAddress.getLocalHost();
byte ip[] = host.getAddress();
for (int i=0; i<ip.length; i++) {
if (i > 0) {
System.out.print(".");
}
System.out.print(ip[i] & 0xff);
}
System.out.println();
}
}

Logika program :
Pada blok program diatas terdapat libarary java. net yang digunakan untuk menyimpan variabel. program diatas digunakan untuk mendapatkan sebuah IP address. terdapat penyeleksian kondisi menggunakan if-else dan perulangan for. System.out.print digunakan untuk mencetak hasil dari penyeleksian kondisi.

  • Get Name
Listing Program :

import java.net.*;
public class getName {
public static void main(String args[]) throws Exception {
InetAddress host = null;
host = InetAddress.getLocalHost();
System.out.println("Nama komputer Anda: " +
host.getHostName());
}
}

Logika Program :Pada blok program diatas digunakan untuk mendapatkan nama dari komputer maing-masing. program diatas menggunakan library java.net. 

  • IP To Name
Listing Program :

import java.net.*;
public class IPtoName {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: java IPtoName <IP address>");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch (UnknownHostException e) {
System.out.println("invalid IP - malformed IP");
System.exit(0);
}
System.out.println(address.getHostName());
}
}

Logika Program:
Pada potongan program diatas digunakan untuk mengkoneksikan alaamat IP dengan nama komputer. erdapat penyeleksian kondisi menggunakan If-Else. jika pangjang args adalah 0 maka akan keluar output seperti diatas. jika tidak maka sistem akan keluar. terdapat penecekan dengan menggunakan perintah try catch.

  • NS LookUp
Listing Program :

import java.net.*;
public class NsLookup {
public static void main(String args[]) {
if (args.length == 0) {
System.out.println("Pemakaian: java NsLookup <hostname>");
System.exit(0);
}
String host = args[0];
InetAddress address = null;
try {
address = InetAddress.getByName(host);
} catch(UnknownHostException e) {
System.out.println("Unknown host");
System.exit(0);
}
byte[] ip = address.getAddress();
for (int i=0; i<ip.length; i++) {
if (i > 0) System.out.print(".");
System.out.print((ip[i]) & 0xff);
}
System.out.println();
}
}

Logika Program :
pada program diatas, kita akan menjalankan NS Look Up. cara menjalankannya adalah dengan memasukkan nama komputer kita yang sebelumnya telah dibuat. pada program diatas menggunakan libarary java.net. terdapat perbaikan program dengan menggunakan perintah try-catch. output dari program ini sendiiri yaitu mengeluarkan output yaitu alamat IP Address dari komputer. terdapat perulangan for, dan penyeleksian kodisi if.

Output :


  • Client Server
- Listing SimpleServer

import java.io.*;
import java.net.*;
public class simpleServer {
public final static int TESTPORT = 5000;
public static void main(String args[]) {
ServerSocket checkServer = null;
String line;
BufferedReader is = null;
DataOutputStream os = null;
Socket clientSocket = null;
try {
checkServer = new ServerSocket(TESTPORT);
System.out.println("Aplikasi Server hidup ...");
} catch (IOException e) {
System.out.println(e);
}
try {
clientSocket = checkServer.accept();
is = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
os = new DataOutputStream(clientSocket.getOutputStream());
} catch (Exception ei) {
ei.printStackTrace();
}
try {
line = is.readLine();
System.out.println("Terima : " + line);
if (line.compareTo("salam") == 0) {
os.writeBytes("salam juga");
} else {
os.writeBytes("Maaf, saya tidak mengerti");
}
} catch (IOException e) {
System.out.println(e);
}

try {
os.close();
is.close();
clientSocket.close();
} catch (IOException ic) {
ic.printStackTrace();
}
}
}

Logika Program :
Pada program diatas digunakan untuk menghidupkan sebuah server agar dapat berkomunikasi dengan client. Jika server telah hidup maka akan keluar output "Apliaksi server telah hidup". kemudian client akan mengirimkan pesan yang akan dibalas oleh server yang berupa salam. jika yang ditulis client bukan salam aka cerver akan merespon "maaf saya tidak mengerti"


- Listing SimpleClient

import java.io.*;
import java.net.*;
public class simpleClient {
public final static int REMOTE_PORT = 5000;
public static void main(String args[]) throws Exception {
Socket cl = null;
BufferedReader is = null;
DataOutputStream os = null;
BufferedReader stdin = new BufferedReader(new
InputStreamReader(System.in));
String userInput = null;
String output = null;
// Membuka koneksi ke server pada port REMOTE_PORT
try {
cl = new Socket(args[0], REMOTE_PORT);
is = new BufferedReader(new
InputStreamReader(cl.getInputStream()));
os = new DataOutputStream(cl.getOutputStream());
} catch(UnknownHostException e1) {
System.out.println("Unknown Host: " + e1);
} catch (IOException e2) {
System.out.println("Erorr io: " + e2);
}
// Menulis ke server
try {
System.out.print("Masukkan kata kunci: ");
userInput = stdin.readLine();
os.writeBytes(userInput + "\n");
} catch (IOException ex) {
System.out.println("Error writing to server..." + ex);
}
// Menerima tanggapan dari server
try {
output = is.readLine();
System.out.println("Dari server: " + output);
} catch (IOException e) {
e.printStackTrace();
}
// close input stream, output stream dan koneksi
try {
is.close();
os.close();
cl.close();
} catch (IOException x) {
System.out.println("Error writing...." + x);
}
}
}

Logika SimpleClient :
Pada blok program ini diguanak untuk mengkoneksikan client ke server. program ini dibuat agar client dapat mengirim pesan ke server dan menerima tanggapan dari server.



Sabtu, 22 April 2017

QUANTUM COMPUTATION

QUANTUM COMPUTATION

Hasil gambar untuk quantum computing

Studi komputasi kuantum sistem komputasi teoretis (komputer kuantum ) yang memanfaatkan fenomena kuantum mekanis secara langsung, seperti superposisi dan keterkaitan , untuk melakukan operasi pada data. Komputer kuantum berbeda dari komputer digital digital biner berdasarkan transistor . Sedangkan komputasi digital yang umum mensyaratkan bahwa data dikodekan menjadi digit biner ( bit ), yang masing-masing selalu berada di salah satu dari dua keadaan yang pasti (0 atau 1), perhitungan kuantum menggunakan bit kuantum , yang dapat berada dalam superposisi keadaan. Sebuah mesin Turing kuantum adalah model teoritis komputer semacam itu, dan juga dikenal sebagai komputer kuantum universal. Bidang komputasi kuantum diprakarsai oleh karya Paul Benioff dan Yuri Manin pada tahun 1980, Richard Feynman pada tahun 1982, dan David Deutsch pada tahun 1985. Komputer kuantum dengan berputar sebagai bit kuantum Juga diformulasikan untuk digunakan sebagai ruang kuantum -waktu pada tahun 1968.

Pada tahun 2017, perkembangan komputer kuantum aktual masih dalam tahap awal, namun eksperimen telah dilakukan di mana operasi komputasi kuantum dieksekusi pada sejumlah kecil bit kuantum. Penelitian praktis dan teoritis terus berlanjut, dan banyak pemerintah nasional dan badan militer mendanai penelitian komputasi kuantum dalam upaya mengembangkan komputer kuantum untuk tujuan keamanan sipil, bisnis, perdagangan, lingkungan dan nasional, seperti kriptanalisis .

Komputer kuantum skala besar secara teoritis dapat memecahkan masalah tertentu dengan lebih cepat daripada komputer klasik manapun yang menggunakan algoritme terbaik yang diketahui saat ini , seperti faktorisasi bilangan bulat menggunakan algoritma Shor atau simulasi sistem kuantum banyak-tubuh . Ada algoritma kuantum , seperti algoritma Simon , yang berjalan lebih cepat daripada algoritma klasik probabilistik yang mungkin.Komputer klasik pada prinsipnya (dengan sumber eksponensial ) mensimulasikan algoritma kuantum, karena perhitungan kuantum tidak melanggar tesis Gereja-Turing . Di sisi lain, komputer kuantum mungkin dapat memecahkan masalah secara efisien yang praktis tidak dapat dilakukan pada komputer klasik.

Komputer klasik memiliki memori yang terdiri dari bit , di mana masing-masing bit diwakili oleh salah satu atau nol. Komputer kuantum mempertahankan urutan qubit . Sebuah qubit tunggal dapat mewakili satu, nol, atau superposisi kuantum dari dua negara qubit tersebut: 13-16 sepasang qubit dapat berada dalam superposisi kuantum dari 4 keadaan, [10] : 16 dan tiga qubit dalam superposisi 8 keadaan. Secara umum, sebuah komputer kuantum dengan  {\ Displaystyle n} N Qubit bisa di superposisi sewenang-wenang sampai  {\ Displaystyle 2 ^ {n}} 2 ^ {n} Keadaan berbeda secara bersamaan [10] : 17 (ini sebanding dengan komputer biasa yang hanya bisa berada di salah satu dari ini  {\ Displaystyle 2 ^ {n}} 2 ^ {n} Menyatakan pada satu waktu). Sebuah komputer kuantum beroperasi dengan menetapkan qubit dalam drift sempurna [ klarifikasi diperlukan ] yang mewakili masalah yang ada dan dengan memanipulasi qubit tersebut dengan urutan kuantum gerbang logika yang tetap . Urutan gerbang yang akan diterapkan disebut algoritma kuantum . Perhitungan diakhiri dengan pengukuran, meruntuhkan sistem qubit menjadi salah satu dari  {\ Displaystyle 2 ^ {n}} 2 ^ {n} Negara murni, di mana setiap qubit adalah nol atau satu, membusuk menjadi keadaan klasik. Hasilnya bisa paling banyak  {\ Displaystyle n} N Bit klasik informasi. Algoritma kuantum sering bersifat probabilistik, karena mereka memberikan solusi yang benar hanya dengan probabilitas tertentu. [11] Perhatikan bahwa istilah komputasi non deterministik tidak boleh digunakan dalam kasus tersebut untuk berarti probabilistik (komputasi), karena istilah non deterministik memiliki arti yang berbeda dalam ilmu komputer.

Contoh penerapan qubit komputer kuantum dapat dimulai dengan penggunaan partikel dengan dua keadaan putaran : "turun" dan "naik" (biasanya ditulis  {\ Displaystyle | {\ downarrow} \ rangle} |  {\ Downarrow} \ rangle dan  {\ Displaystyle | {\ uparrow} \ rangle} |  {\ Uparrow} \ rangle , atau  {\ Displaystyle | 0 {\ rangle}} |  0 {\ rangle} dan  {\ Displaystyle | 1 {\ rangle}} |  1 {\ rangle} ). Ini benar karena sistem seperti itu dapat dipetakan ke sistem spin-1/2 yang efektif.

Prinsip operasi
Sebuah komputer kuantum dengan jumlah qubit tertentu pada dasarnya berbeda dari komputer klasik yang terdiri dari jumlah bit klasik yang sama. Sebagai contoh, mewakili keadaan sistem n- qubit pada komputer klasik memerlukan penyimpanan 2 n koefisien kompleks, sedangkan untuk mengkarakterisasi keadaan sistem n -bit klasik cukup untuk memberikan nilai n bit, itu Adalah, hanya n nomor. Meskipun fakta ini nampaknya mengindikasikan bahwa qubit dapat menyimpan informasi lebih jauh secara eksponensial daripada rekan-rekan klasik mereka, perhatian harus diambil untuk tidak mengabaikan fakta bahwa qubit hanya dalam superposisi probabilistik dari semua negara bagian mereka. Ini berarti bahwa ketika keadaan akhir qubit diukur, mereka hanya akan ditemukan di salah satu konfigurasi yang mungkin terjadi sebelum pengukuran. Secara umum tidak benar memikirkan sistem qubit sebagai satu keadaan tertentu sebelum pengukuran, karena fakta bahwa mereka berada dalam keadaan superposisi di negara bagian sebelum pengukuran dibuat secara langsung mempengaruhi hasil perhitungan yang mungkin terjadi.

Keadaan komputer kuantum tiga qubit juga digambarkan oleh vektor delapan dimensi  {\ Displaystyle (a_ {0}, a_ {1}, a_ {2}, a_ {3}, a_ {4}, a_ {5}, a_ {6}, a_ {7})} {\ Displaystyle (a_ {0}, a_ {1}, a_ {2}, a_ {3}, a_ {4}, a_ {5}, a_ {6}, a_ {7})} . Di sini, bagaimanapun, koefisiennya  {\ Displaystyle a_ {k}} A_ {k} Adalah bilangan kompleks , dan ini adalah jumlah dari kuadrat nilai absolut koefisien,  {\ Displaystyle \ sum _ {i} | a_ {i} | ^ {2}} {\ Displaystyle \ sum _ {i} |  a_ {i} |  ^ {2}} , Itu harus sama 1. Untuk masing-masing  {\ Displaystyle k} K , Nilai absolut kuadrat  {\ Displaystyle \ left | a_ {k} \ right | ^ {2}} {\ Displaystyle \ kiri |  a_ {k} \ right |  ^ {2}} Memberikan probabilitas sistem yang ditemukan setelah pengukuran di  {\ Displaystyle k} K -th negara bagian. Namun, karena bilangan kompleks mengkodekan bukan hanya besaran tetapi juga arah bidang kompleks , perbedaan fasa antara dua koefisien (state) mewakili parameter yang berarti. Ini adalah perbedaan mendasar antara komputasi kuantum dan komputasi klasik probabilistik. [13]

Jika Anda mengukur tiga qubit, Anda akan mengamati string tiga bit. Probabilitas untuk mengukur string yang diberikan adalah besaran kuadrat dari koefisien string itu (yaitu probabilitas pengukuran 000 =  {\ Displaystyle | a_ {0} | ^ {2}} {\ Displaystyle |  a_ {0} |  ^ {2}} , Probabilitas pengukuran 001 =  {\ Displaystyle | a_ {1} | ^ {2}} {\ Displaystyle |  a_ {1} |  ^ {2}} , Dll.). Dengan demikian, mengukur keadaan kuantum yang digambarkan oleh koefisien kompleks  {\ Displaystyle (a_ {0}, a_ {1}, a_ {2}, a_ {3}, a_ {4}, a_ {5}, a_ {6}, a_ {7})} {\ Displaystyle (a_ {0}, a_ {1}, a_ {2}, a_ {3}, a_ {4}, a_ {5}, a_ {6}, a_ {7})} Memberikan distribusi probabilitas klasik  {\ Displaystyle (| a_ {0} | ^ {2}, | a_ {1} | ^ {2}, | a_ {2} | ^ {2}, | a_ {3} | ^ {2}, | a_ {4} | ^ {2}, | a_ {5} | ^ {2}, | a_ {6} | ^ {2}, | a_ {7} | ^ {2})} {\ Displaystyle (| a_ {0} | ^ {2}, | a_ {1} | ^ {2}, | a_ {2} | ^ {2}, | a_ {3} | ^ {2}, | a_ {4} | ^ {2}, | a_ {5} | ^ {2}, | a_ {6} | ^ {2}, | a_ {7} | ^ {2})} Dan kita mengatakan bahwa keadaan kuantum "runtuh" ​​ke keadaan klasik sebagai hasil pengukuran.

Sebuah vektor delapan dimensi dapat ditentukan dengan berbagai cara tergantung pada dasar apa yang dipilih untuk ruang tersebut. Dasar dari string bit (misalnya, 000 , 001 , ..., 111 ) dikenal sebagai dasar komputasi. Basis lain yang mungkin adalah satuan , vektor ortogonal dan vektor eigen dari operator Pauli-x . Ket notasi sering digunakan untuk membuat pilihan dasar eksplisit. Misalnya, negara  {\ Displaystyle (a_ {0}, a_ {1}, a_ {2}, a_ {3}, a_ {4}, a_ {5}, a_ {6}, a_ {7})} {\ Displaystyle (a_ {0}, a_ {1}, a_ {2}, a_ {3}, a_ {4}, a_ {5}, a_ {6}, a_ {7})} Dalam basis komputasi dapat ditulis sebagai:
{\ Displaystyle a_ {0} \, | 000 \ rangle + a_ {1} \, | 001 \ rangle + a_ {2} \, | 010 \ rangle + a_ {3} \, | 011 \ rangle + a_ {4 } \, | 100 \ rangle + a_ {5} \, | 101 \ rangle + a_ {6} \, | 110 \ rangle + a_ {7} \, | 111 \ rangle} {\ Displaystyle a_ {0} \, |  000 \ rangle + a_ {1} \, |  001 \ rangle + a_ {2} \, |  010 \ rangle + a_ {3} \, |  011 \ rangle + a_ {4} \, |  100 \ rangle + a_ {5} \, |  101 \ rangle + a_ {6} \, |  110 \ rangle + a_ {7} \, |  111 \ rangle}
Dimana, misalnya,  {\ Displaystyle | 010 \ rangle = \ left (0,0,1,0,0,0,0,0 \ right)} {\ Displaystyle |  010 \ rangle = \ kiri (0,0,1,0,0,0,0,0 \ right)}
Dasar komputasi untuk qubit tunggal (dua dimensi) adalah  {\ Displaystyle | 0 \ rangle = \ left (1,0 \ right)} |  0 \ rangle = \ kiri (1,0 \ right) dan  {\ Displaystyle | 1 \ rangle = \ left (0,1 \ right)} |  1 \ rangle = \ kiri (0,1 \ right) .

Dengan menggunakan vektor eigen dari operator Pauli-x, sebuah qubit tunggal  {\ Displaystyle | + \ rangle = {\ tfrac {1} {\ sqrt {2}}} \ left (1,1 \ right)} |  + \ Rangle = {\ tfrac {1} {\ sqrt {2}}} \ left (1,1 \ right) dan  {\ Displaystyle | - \ rangle = {\ tfrac {1} {\ sqrt {2}}} \ left (1, -1 \ right)} |  - \ rangle = {\ tfrac {1} {\ sqrt {2}}} \ left (1, -1 \ right) .

Potensi
Faktorisasi integer , yang mendasari keamanan sistem kriptografi kunci publik , diyakini tidak dapat dibandingkan dengan komputer biasa dengan bilangan bulat besar jika produk itu adalah bilangan prima (misalnya produk dua bilangan prima 300 digit). Sebagai perbandingan, komputer kuantum secara efisien dapat memecahkan masalah ini dengan menggunakan algoritma Shor untuk menemukan faktor- faktornya . Kemampuan ini memungkinkan sebuah komputer kuantum untuk mendekripsi banyak sistem kriptografi yang digunakan saat ini, dalam artian akan ada algoritma polynomial time (dalam jumlah digit dari integer) untuk memecahkan masalah. Secara khusus, sebagian besar kunci publik populer ciphers didasarkan pada kesulitan anjak bilangan bulat atau masalah logaritma diskrit , yang keduanya dapat diselesaikan dengan algoritma Shor. Secara khusus algoritma RSA , Diffie-Hellman , dan Elliptic Diffie-Hellman bisa dipecahkan. Ini digunakan untuk melindungi halaman Web aman, email terenkripsi, dan banyak jenis data lainnya. Melanggar ini akan memiliki konsekuensi signifikan untuk privasi dan keamanan elektronik.

Namun, algoritma kriptografi lainnya tampaknya tidak rusak oleh algoritma tersebut. Beberapa algoritma kunci publik didasarkan pada masalah selain faktorisasi bilangan bulat dan masalah logaritma diskrit yang digunakan algoritma Shor, seperti kriptosistem McEliece yang didasarkan pada masalah dalam teori pengkodean . Kriptosistem berbasis kisi juga tidak diketahui rusak oleh komputer kuantum, dan menemukan algoritma waktu polinomial untuk memecahkan masalah subkelompok tersembunyi diastral, yang akan menghancurkan banyak kriptosistem berbasis kisi, adalah masalah terbuka yang dipelajari dengan baik. .Telah terbukti bahwa menerapkan algoritma Grover untuk memecahkan algoritma simetrik (kunci rahasia) dengan kekerasan memerlukan waktu yang sama dengan kira-kira 2 n / 2 doa dari algoritma kriptografi yang mendasarinya, dibandingkan dengan kira-kira 2 n dalam kasus klasik, yang berarti bahwa panjang kunci simetris terbagi dua secara efektif: AES-256 memiliki keamanan yang sama terhadap serangan menggunakan algoritma Grover yang AES-128 melawan pencarian brutal klasik (lihat ukuran kunci ). Kriptografi kuantum berpotensi memenuhi beberapa fungsi kriptografi kunci publik.

Perkembangan
Ada sejumlah model komputasi kuantum, dibedakan oleh elemen dasar di mana perhitungannya membusuk. Keempat model utama yang penting secara praktis adalah:

Gerbang kuantum array (perhitungan didekomposisi menjadi urutan beberapa kuasi kuadrat qubit)
Komputer kuantum satu arah (perhitungan didekomposisi menjadi urutan pengukuran satu qubit yang diterapkan pada keadaan awal atau keadaan cluster yang sangat terjerat)
Komputer kuantum adiabatik , berdasarkan anil Quantum (penghitungan didekomposisi menjadi transformasi berkelanjutan lambat dari Hamiltonian awal menjadi Hamiltonian akhir, yang tanahnya mengandung larutan)
Komputer kuantum topologis (penghitungan diurai menjadi anyaman anyaman dalam kisi 2D)
Mesin Quantum Turing secara teoritis penting namun penerapan langsung model ini tidak dilakukan. Keempat model perhitungan telah terbukti setara; Masing dapat mensimulasikan yang lain dengan tidak lebih dari overhead polinomial.

SUMBER : https://en.wikipedia.org/wiki/Quantum_computing

MOBILE COMPUTING

MOBILE COMPUTING
Komputasi mobile adalah interaksi manusia-komputer dimana komputer diperkirakan akan diangkut selama penggunaan normal, yang memungkinkan transmisi data, suara dan video. Komputasi mobile melibatkan komunikasi bergerak, perangkat keras bergerak, dan perangkat lunak mobile. Masalah komunikasi meliputi jaringan ad hoc dan jaringan infrastruktur serta sifat komunikasi, protokol , format data dan teknologi beton. Perangkat keras mencakup perangkat mobile atau komponen perangkat. Perangkat lunak mobile berhubungan dengan karakteristik dan persyaratan aplikasi mobile.
Hasil gambar untuk mobile computing

Prinsip-prinsip dari Mobile Computing :

  • Portabilitas: Memfasilitasi pergerakan perangkat dalam lingkungan komputasi mobile.
  • Konektivitas: Kemampuan untuk terus menerus terhubung dengan jumlah lag / downtime minimal, tanpa terpengaruh oleh pergerakan simpul yang terhubung
  • Interaktivitas Sosial: Menjaga konektivitas agar berkolaborasi dengan pengguna lain, setidaknya berada dalam lingkungan yang sama.
  • Individualitas: Mengadaptasi teknologi yang sesuai dengan kebutuhan individu.
  • Portabilitas: Perangkat / node yang terhubung dalam sistem komputasi mobile harus mempermudah mobilitas. Perangkat ini mungkin memiliki kemampuan perangkat terbatas dan catu daya terbatas, namun harus memiliki kemampuan pemrosesan dan portabilitas fisik yang memadai untuk beroperasi di lingkungan yang dapat bergerak.
  • Konektivitas: Ini mendefinisikan kualitas layanan (QoS) dari konektivitas jaringan. Dalam sistem komputasi mobile, ketersediaan jaringan diharapkan dapat dipertahankan pada tingkat tinggi dengan jumlah lag / downtime minimal tanpa dipengaruhi oleh mobilitas simpul yang terhubung.
  • Interaktivitas: Simpul yang tergabung dalam sistem komputasi mobile saling terkait satu sama lain untuk berkomunikasi dan berkolaborasi melalui transaksi data yang aktif.
  • Individualitas: Perangkat portabel atau mobile node yang terhubung ke jaringan seluler sering menunjukkan individu; Sistem komputasi mobile harus dapat mengadopsi teknologi untuk memenuhi kebutuhan individu dan juga untuk mendapatkan informasi kontekstual dari masing-masing node.

Perangkat
Beberapa bentuk perangkat komputasi mobile yang paling umum adalah seperti yang diberikan di bawah ini:
  • Komputer portabel, kompak, unit ringan termasuk keyboard set karakter lengkap dan terutama ditujukan sebagai host untuk perangkat lunak yang mungkin diberi parameter, seperti laptop, notebook, notes, dll.
  • Ponsel termasuk kumpulan tombol terbatas yang terutama ditujukan namun tidak terbatas pada komunikasi vokal, seperti ponsel cerdas, ponsel, ponsel berfitur, dll.
  • Kartu pintar yang bisa menjalankan beberapa aplikasi tapi biasanya pembayaran, perjalanan dan area akses aman
  • Komputer yang mudah dipakai , sebagian besar terbatas pada tombol fungsional dan terutama ditujukan sebagai penggabungan agen perangkat lunak , seperti jam tangan, gelang, kalung, implan tanpa kunci, dll.
  • Keberadaan kelas-kelas ini diharapkan tahan lama, dan saling melengkapi dalam penggunaan pribadi, tidak ada yang menggantikan yang lain dalam semua fitur kenyamanan.

Keterbatasan
  • Rentang dan bandwidth: Akses Internet Mobile umumnya lebih lambat daripada koneksi kabel langsung, menggunakan teknologi seperti GPRS dan EDGE , dan baru-baru ini jaringan HSDPA , HSUPA , 3G dan 4G dan juga jaringan 5G yang akan datang. Jaringan ini biasanya tersedia dalam jangkauan menara telepon seluler komersial. LAN nirkabel berkecepatan tinggi tidak mahal namun memiliki rentang yang sangat terbatas.
  • Standar keamanan: Saat bekerja di seluler, seseorang bergantung pada jaringan publik, yang memerlukan penggunaan VPN dengan hati-hati. Keamanan menjadi perhatian utama saat menyangkut standar komputasi mobile pada armada. Seseorang dapat dengan mudah menyerang VPN melalui sejumlah besar jaringan yang saling terhubung melalui jalur.
  • Konsumsi daya: Bila stopkontak atau generator portabel tidak tersedia, komputer ponsel harus sepenuhnya bergantung pada daya baterai. Dikombinasikan dengan ukuran kompak dari banyak perangkat mobile, ini sering berarti baterai yang sangat mahal harus digunakan untuk mendapatkan masa pakai baterai yang diperlukan.
  • Interferensi transmisi: Cuaca, medan, dan jarak dari titik sinyal terdekat semuanya dapat mengganggu penerimaan sinyal. Penerimaan di terowongan, beberapa bangunan, dan daerah pedesaan seringkali miskin.
  • Potensi bahaya kesehatan: Orang yang menggunakan perangkat mobile saat mengemudi sering terganggu karena mengemudi dan oleh karena itu diasumsikan lebih mungkin terlibat dalam kecelakaan lalu lintas. (Meskipun ini mungkin tampak jelas, ada banyak diskusi tentang apakah melarang penggunaan perangkat mobile saat mengemudi mengurangi kecelakaan atau tidak. Ponsel dapat mengganggu perangkat medis sensitif. Pertanyaan tentang radiasi ponsel dan kesehatan telah dinaikkan .
  • Antarmuka manusia dengan perangkat: Layar dan keyboard cenderung kecil, yang mungkin membuat mereka sulit digunakan. Metode input alternatif seperti speech or handwriting recognition memerlukan pelatihan.

Komputasi dalam bidang industri dan komputasi armada
Banyak tenaga lapangan komersial dan pemerintah memasang komputer jinjing kasar dengan armada kendaraan mereka. Ini mengharuskan unit untuk berlabuh ke kendaraan untuk keamanan pengaman, keamanan perangkat , dan ergonomi . Komputer kasar dinilai memiliki getaran parah yang terkait dengan kendaraan dinas besar dan pengemudi off-road dan kondisi lingkungan yang keras dari penggunaan profesional konstan seperti dalam layanan medis darurat, kebakaran , dan keamanan publik.

Unsur lain yang mempengaruhi fungsi dalam kendaraan:
  • Suhu operasi : Kabin kendaraan sering mengalami ayunan suhu dari -30-60 ° C (-22-140 ° F). Komputer biasanya harus mampu menahan suhu ini saat beroperasi. Pendingin berbasis kipas yang khas telah menyatakan batas suhu suhu sekitar 35-38 ° C (95-100 ° F), dan suhu di bawah titik beku memerlukan pemanas lokal untuk membawa komponen sampai suhu operasi (berdasarkan studi independen oleh Grup SRI dan oleh Panasonic Litbang).
  • Getaran dapat menurunkan harapan hidup komponen komputer, terutama penyimpanan rotasi seperti HDD .
  • Visibilitas layar standar menjadi masalah di bawah sinar matahari yang cerah.
  • Pengguna layar sentuh mudah berinteraksi dengan unit di lapangan tanpa melepas sarung tangan.
  • Pengaturan baterai dengan suhu tinggi: Baterai lithium ion sensitif terhadap kondisi suhu tinggi untuk pengisian daya. Komputer yang dirancang untuk lingkungan mobile harus dirancang dengan fungsi pengisian suhu tinggi yang membatasi biaya hingga 85% atau kurang dari kapasitas.
  • Sambungan antena eksternal melewati kabin logam khas kendaraan yang akan menghalangi penerimaan nirkabel, dan memanfaatkan peralatan komunikasi dan navigasi eksternal yang jauh lebih mampu.

Masalah keamanan yang terlibat dalam mobile
  • Artikel utama: keamanan ponsel, Keamanan mobile atau keamanan ponsel semakin penting dalam komputasi mobile. Ini adalah perhatian khusus karena berkaitan dengan keamanan informasi pribadi yang sekarang tersimpan di smartphone .
  • Semua smartphone, karena komputer, lebih diutamakan sasaran serangan. Serangan ini memanfaatkan kelemahan yang berhubungan dengan smartphone yang bisa berasal dari sarana komunikasi seperti SMS , MMS , jaringan wifi , dan GSM . Ada juga serangan yang memanfaatkan kerentanan perangkat lunak baik dari browser web maupun sistem operasi. Akhirnya, ada bentuk perangkat lunak berbahaya yang mengandalkan pengetahuan pengguna rata-rata yang lemah.
  • Berbagai tindakan balasan keamanan yang berbeda sedang dikembangkan dan diterapkan pada smartphone, mulai dari keamanan di berbagai lapisan perangkat lunak hingga penyebaran informasi ke pengguna akhir. Ada praktik bagus untuk diamati di semua tingkat, mulai dari desain hingga penggunaan, melalui pengembangan sistem operasi , lapisan perangkat lunak, dan aplikasi yang dapat didownload.

Perangkat komputasi portabel
  • Perangkat mobile dan komputer portabel, Beberapa kategori perangkat komputasi portabel dapat berjalan di baterai namun tidak diklasifikasikan sebagai laptop: komputer jinjing, PDA , PC ultra mobile (UMPC), tablet dan smartphone.

  • Komputer jinjing (diskontinu) adalah komputer tujuan umum yang dapat dengan mudah dipindahkan dari satu tempat ke tempat lainnya, namun tidak dapat digunakan saat dalam perjalanan, biasanya karena memerlukan beberapa pengaturan dan sumber daya AC. Contoh yang paling terkenal adalah Osborne 1 . Komputer portabel juga disebut PC "yang dapat diangkut" atau "luggable".
  • Asisten digital pribadi (PDA) (diskontinu) adalah komputer berukuran kecil yang biasanya berukuran saku dengan fungsionalitas terbatas. Hal ini dimaksudkan untuk melengkapi dan melakukan sinkronisasi dengan komputer desktop, memberikan akses ke kontak, buku alamat, catatan, e-mail dan fitur lainnya.
  • PDA Palm TX, PC ultra mobile (dihentikan) adalah komputer dengan ukuran penuh, PDA yang menjalankan sistem operasi dengan tujuan umum.

SUMBER : https://en.wikipedia.org/wiki/Mobile_computing