Trong toan hoc va khoa hoc may tinh, mot thuat toan, con goi la giai thuat, la mot tap hop huu han cac huong dan đuoc xac đinh ro rang, co the thuc hien đuoc bang may tinh, thuong đe giai quyet mot lop van đe hoac đe thuc hien mot phep tinh. Cac thuat toan luon ro rang va đuoc su dung chi ro viec thuc hien cac phep tinh, xu ly du lieu, suy luan tu đong va cac tac vu khac.
La mot phuong phap hieu qua, mot thuat toan co the đuoc bieu dien trong mot khoang khong gian va thoi gian huu han, va bang mot ngon ngu hinh thuc đuoc xac đinh ro rang  đe tinh toan mot ham so. Bat đau tu trang thai ban đau va đau vao ban đau (co the trong), cac huong dan mo ta mot phep tinh, khi đuoc thuc thi, se tien hanh qua mot so  huu han cac trang thai ke tiep đuoc xac đinh ro, cuoi cung tao ra "đau ra"  va cham dut o trang thai ket thuc cuoi cung. Su chuyen đoi tu trang thai nay sang trang thai tiep theo khong nhat thiet phai mang tinh xac đinh; mot so thuat toan, đuoc goi la thuat toan ngau nhien, ket hop đau vao ngau nhien.
Khai niem thuat toan đa ton tai tu thoi co đai. Cac thuat toan so hoc, chang han nhu thuat toan chia, đuoc su dung boi cac nha toan hoc Babylon co đai vao khoang 2500 TCN va cac nha toan hoc Ai Cap vao khoang 1550 TCN. Cac nha toan hoc Hy Lap sau đo đa su dung cac thuat toan trong sang Eratosthenes đe tim so nguyen to, va thuat toan Euclide đe tim uoc chung lon nhat cua hai so. Cac nha toan hoc A Rap nhu al-Kindi vao the ky thu 9 đa su dung cac thuat toan mat ma đe pha ma, dua tren phan tich tan so.
Ban than tu thuat toan (algorithm) tu bat nguon tu nha toan hoc the ky thu 9 Muhammad ibn Musa al-Khwarizmi, ten ong đuoc Latinh hoa thanh Algoritmi. Viec chinh thuc hoa mot phan nhung gi se tro thanh khai niem thuat toan hien đai bat đau voi no luc giai Entscheidungsproblem (van đe quyet đinh) do David Hilbert đat ra vao nam 1928. Cac cong thuc hoa sau nay đuoc đong khung nhu nhung no luc đe xac đinh " kha nang tinh toan hieu qua "  hoac "phuong phap hieu qua". Nhung cong thuc hoa đo bao gom cac ham đe quy Godel - Herbrand - Kleene cua cac nam 1930, 1934 va 1935, phep tinh lambda cua Alonzo Church nam 1936, Cong thuc 1 cua Emil Post nam 1936 va cac may Turing cua Alan Turing nam 1936–37 va 1939.


Đinh nghia khong chinh thuc Mot đinh nghia khong chinh thuc co the la "mot tap hop cac quy tac xac đinh chinh xac mot chuoi hoat đong", ma se bao gom tat ca cac chuong trinh may tinh (bao gom ca cac chuong trinh khong thuc hien phep tinh so) va (vi du) bat ky thu tuc hanh chinh quy đinh nao  hoac cong thuc nau an.
Noi chung, mot chuong trinh chi la mot thuat toan neu cuoi cung no dung lai  - mac du cac vong lap vo han đoi khi co the chap nhan đuoc.
Mot vi du nguyen mau cua mot thuat toan la thuat toan Euclid, đuoc su dung đe xac đinh uoc chung lon nhat cua hai so nguyen; mot vi du đuoc mo ta bang luu đo o tren va la vi du trong phan sau.
Boolos, Jeffrey & 1974, 1999 đua ra mot đinh nghia khong chinh thuc cho thuat toan nhu sau:

Khong mot con nguoi nao co the viet đu nhanh, đu dai, hoac đu nho † († "nho hon va nho hon ma khong co gioi han... ban đang co viet tren phan tu, tren nguyen tu, tren electron") đe liet ke tat ca cac thanh vien cua vo so thiet lap bang cach viet ra ten cua ho, cai khac, trong mot so ky hieu. Nhung con nguoi co the lam đieu gi đo huu ich khong kem, trong truong hop co nhieu tap hop vo han nhat đinh: Ho co the đua ra cac chi dan ro rang đe xac đinh phan tu thu n cua tap hop, cho n huu han tuy y. Nhung huong dan nhu vay phai đuoc đua ra kha ro rang, duoi hinh thuc ma chung co the đuoc tuan theo boi mot may tinh toan hoac boi mot con nguoi chi co kha nang thuc hien cac thao tac rat co ban tren cac ky hieu. 
"Tap hop vo han liet ke đuoc" la tap hop ma cac phan tu cua no co the đuoc song anh tuong ung 1-1 voi cac so nguyen. Vi vay, Boolos va Jeffrey đang noi rang mot thuat toan ngu y huong dan cho mot qua trinh "tao" cac so nguyen đau ra tu mot so nguyen "đau vao" tuy y hoac cac so nguyen, theo ly thuyet, co the lon tuy y. Vi du: mot thuat toan co the la mot phuong trinh đai so chang han nhu y = m + n (tuc la hai "bien đau vao" tuy y m va n tao ra đau ra y), nhung cac no luc cua cac tac gia khac nhau đe xac đinh khai niem cho thay rang tu đo ngu y nhieu hon the nay, mot cai gi đo theo thu tu cua (cho vi du bo sung):

Cac huong dan chinh xac (bang ngon ngu ma "may tinh" hieu đuoc)  đe co mot quy trinh "tot"  nhanh, hieu qua, chi đinh cac "đong thai" cua "may tinh" (may hoac con nguoi, đuoc trang bi ben trong thong tin va kha nang)  đe tim, giai ma va sau đo xu ly cac so nguyen / ky hieu đau vao tuy y m va n, ky hieu + va = … va "hieu qua" 
san xuat ra, trong mot thoi gian "hop ly", đau ra-so nguyen y tai mot noi đuoc chi đinh va voi đinh dang đuoc chi đinh.
Khai niem thuat toan cung đuoc su dung đe đinh nghia khai niem ve kha nang giai ma — mot khai niem trung tam đe giai thich cach cac he thong hinh thuc ra đoi bat đau tu mot tap hop nho cac tien đe va quy tac. Ve mat logic, thoi gian ma mot thuat toan yeu cau đe hoan thanh khong the đo đuoc, vi no duong nhu khong lien quan đen kich thuoc vat ly thong thuong. Tu su khong chac chan nhu vay, đac trung cho cong viec đang dien ra, dan đen viec khong co đinh nghia thuat toan phu hop voi ca cach su dung thuat ngu nay mot cach cu the (theo mot nghia nao đo)


Hinh thuc hoa Cac thuat toan rat can thiet cho cach may tinh xu ly du lieu. Nhieu chuong trinh may tinh chua cac thuat toan trinh bay chi tiet cac huong dan cu the ma may tinh phai thuc hien — theo mot thu tu cu the — đe thuc hien mot nhiem vu cu the, chang han nhu tinh tien luong cua nhan vien hoac in phieu điem cua hoc sinh. Vi vay, mot thuat toan co the đuoc coi la bat ky chuoi hoat đong nao co the đuoc mo phong boi mot he thong hoan chinh Turing. Cac tac gia khang đinh luan điem nay bao gom Minsky (1967), Savage (1987) va Gurevich (2000):

Minsky: "Nhung chung toi cung se duy tri, voi Turing... rang bat ky thu tuc nao co the" tu nhien "đuoc goi la hieu qua, tren thuc te, co the đuoc thuc hien boi mot chiec may (đon gian). Mac du đieu nay co ve cuc đoan, nhung nhung lap luan… ung ho no thi kho co the bac bo ”.
Gurevich: “… Lap luan khong chinh thuc cua Turing ung ho luan điem cua ong ay bien minh cho luan điem manh me hon: moi thuat toan đeu co the đuoc mo phong boi may Turing… theo Savage [1987], thuat toan la mot qua trinh tinh toan đuoc xac đinh boi may Turing".
May Turing co the xac đinh cac quy trinh tinh toan khong ket thuc. Cac đinh nghia khong chinh thuc cua thuat toan thuong yeu cau thuat toan luon ket thuc. Yeu cau nay lam cho nhiem vu quyet đinh xem mot thu tuc chinh thuc co phai la mot thuat toan khong trong truong hop chung - do mot đinh ly chinh cua ly thuyet tinh toan đuoc goi la bai toan dung.
Thong thuong, khi mot thuat toan đuoc lien ket voi xu ly thong tin, du lieu co the đuoc đoc tu nguon đau vao, đuoc ghi vao thiet bi đau ra va đuoc luu tru đe xu ly them. Du lieu đuoc luu tru đuoc coi la mot phan cua trang thai ben trong cua thuc the thuc hien thuat toan. Trong thuc te, trang thai đuoc luu tru trong mot hoac nhieu cau truc du lieu.
Đoi voi mot so qua trinh tinh toan nay, thuat toan phai đuoc xac đinh chat che: đuoc chi đinh theo cach no ap dung trong moi truong hop co the phat sinh. Đieu nay co nghia la moi buoc co đieu kien phai đuoc xu ly mot cach co he thong, theo tung truong hop cu the; cac tieu chi cho tung truong hop phai ro rang (va co the tinh toan đuoc).
Boi vi mot thuat toan la mot danh sach chinh xac cua cac buoc chinh xac, thu tu tinh toan luon quan trong đoi voi hoat đong cua thuat toan. Cac huong dan thuong đuoc gia đinh la đuoc liet ke ro rang va đuoc mo ta la bat đau "tu tren cung" va đi "xuong duoi cung" —mot y tuong đuoc mo ta chinh thuc hon bang luong kiem soat.
Cho đen nay, cuoc thao luan ve viec chinh thuc hoa mot thuat toan đa gia đinh cac tien đe cua lap trinh menh lenh. Đay la quan niem pho bien nhat - mot quan niem co gang mo ta mot nhiem vu bang cac phuong tien "may moc", roi rac. Duy nhat cho quan niem ve cac thuat toan chinh thuc hoa nay la phep toan gan, đat gia tri cua mot bien. No bat nguon tu truc giac cua " bo nho " nhu mot ban di chuot. Duoi đay la mot vi du ve su phan cong nhu vay.
Đoi voi mot so quan niem thay the ve nhung gi tao thanh mot thuat toan, hay xem lap trinh ham va lap trinh logic.


= Dien đat thuat toan =
Cac thuat toan co the đuoc the hien bang nhieu loai ky hieu, bao gom ngon ngu tu nhien, ma gia, luu đo, bieu đo drakon, ngon ngu lap trinh hoac bang đieu khien (đuoc xu ly boi trinh thong dich). Cac bieu thuc ngon ngu tu nhien cua cac thuat toan co xu huong dai dong va mo ho, va hiem khi đuoc su dung cho cac thuat toan phuc tap hoac ky thuat. Ma gia, luu đo, bieu đo drakon va bang đieu khien la nhung cach co cau truc đe the hien cac thuat toan tranh nhieu su mo ho thuong gap trong cac cau lenh dua tren ngon ngu tu nhien. Cac ngon ngu lap trinh chu yeu nham muc đich the hien cac thuat toan duoi dang co the đuoc thuc thi boi may tinh, nhung cung thuong đuoc su dung nhu mot cach đe đinh nghia hoac tai lieu hoa cac thuat toan.
Co the co nhieu cach bieu dien khac nhau va nguoi ta co the the hien mot chuong trinh may Turing nhat đinh duoi dang mot chuoi cac bang may (xem may trang thai huu han, bang chuyen đoi trang thai va bang đieu khien đe biet them), duoi dang luu đo va bieu đo drakon (xem bieu đo trang thai đe biet them), hoac nhu mot dang ma may tho so hoac ma lap rap đuoc goi la "bo tu" (xem may Turing đe biet them).
Cac đai dien cua thuat toan co the đuoc phan loai thanh ba cap đo đuoc chap nhan cua mo ta may Turing, nhu sau:

1. Mo ta cap cao
“… Van xuoi đe mo ta mot thuat toan, bo qua cac chi tiet trien khai. O cap đo nay, chung toi khong can phai đe cap đen cach may quan ly bang hoac đau tu cua no."
2. Mo ta trien khai
“… Van xuoi đuoc su dung đe xac đinh cach may Turing su dung đau vao cua no va cach no luu tru du lieu tren bang cua no. O cap đo nay, chung toi khong đua ra thong tin chi tiet ve cac trang thai hoac chuc nang chuyen tiep. "
3. Mo ta chinh thuc
Chi tiet nhat, "muc thap nhat", đua ra "bang trang thai" cua may Turing.


Thiet ke Thiet ke thuat toan đe cap đen mot phuong phap hoac mot quy trinh toan hoc đe giai quyet van đe va cac thuat toan ky thuat. Viec thiet ke cac thuat toan la mot phan cua nhieu ly thuyet giai phap nghien cuu hoat đong, chang han nhu lap trinh đong va chia đe tri. Cac ky thuat thiet ke va trien khai cac thiet ke thuat toan con đuoc goi la cac mau thiet ke thuat toan, voi cac vi du bao gom mau phuong phap mau va mau trang tri.
Mot trong nhung khia canh quan trong nhat cua thiet ke thuat toan nam o viec tao ra thuat toan co thoi gian chay hieu qua, con đuoc goi la Big O cua no.
Cac buoc đien hinh trong qua trinh phat trien thuat toan:

Đinh nghia van đe
Phat trien mot mo hinh
Đac điem ky thuat cua thuat toan
Thiet ke mot thuat toan
Kiem tra tinh đung đan cua thuat toan
Phan tich thuat toan
Thuc hien thuat toan
Chuong trinh thu nghiem
Viet tai lieu


Thuc hien Hau het cac thuat toan đuoc thiet ke đe thuc hien nhu cac chuong trinh may tinh. Tuy nhien, cac thuat toan cung đuoc thuc hien bang cac phuong tien khac, chang han nhu trong mang no-ron sinh hoc (vi du, nao nguoi thuc hien phep tinh so hoc hoac con trung đang tim kiem thuc an), trong mach đien hoac trong mot thiet bi co khi.


Thuat toan may tinh Trong cac he thong may tinh, thuat toan ve co ban la mot vi du cua logic đuoc viet trong phan mem boi cac nha phat trien phan mem, đe co hieu qua đoi voi (cac) may tinh "đich" nham tao ra đau ra tu đau vao (co the la rong) nhat đinh. Mot thuat toan toi uu, tham chi chay trong phan cung cu, se tao ra ket qua nhanh hon thuat toan khong toi uu (đo phuc tap thoi gian cao hon) cho cung muc đich, chay trong phan cung hieu qua hon; đo la ly do tai sao cac thuat toan, nhu phan cung may tinh, đuoc coi la cong nghe.
Chuong trinh "thanh lich" (nho gon), chuong trinh "tot" (nhanh): Khai niem "đon gian va thanh lich" xuat hien khong chinh thuc o Knuth va chinh xac la o Chaitin:

Knuth: "… chung toi muon co cac thuat toan tot theo mot khia canh tham my đuoc xac đinh long leo. Mot tieu chi… la khoang thoi gian thuc hien thuat toan…. Cac tieu chi khac la kha nang thich ung cua thuat toan voi may tinh, tinh đon gian va sang trong cua no, v.v. " 
Chaitin: "… mot chuong trinh la 'thanh lich', theo y toi thi đo la chuong trinh nho nhat co the đe tao ra ket qua đau ra ma no thuc hien" 
Chaitin mo đau cho đinh nghia cua minh bang: "Toi se cho ban thay rang ban khong the chung minh rang mot chuong trinh la 'thanh lich '" —chang han nhu mot bang chung se giai quyet đuoc bai toan tam dung (ibid).
Thuat toan so voi ham co the tinh toan bang mot thuat toan: Đoi voi mot ham đa cho, nhieu thuat toan co the ton tai. Đieu nay đung, ngay ca khi khong mo rong tap lenh co san cho lap trinh vien. Rogers nhan xet rang “Đieu quan trong la phai phan biet giua khai niem thuat toan, tuc la thu tuc va khai niem ham co the tinh toan bang thuat toan, tuc la anh xa đuoc tao ra boi thu tuc. Cung mot chuc nang co the co mot so thuat toan khac nhau ".
That khong may, co the co su can bang giua tinh tot (toc đo) va tinh thanh lich (tinh nho gon) —mot chuong trinh thanh lich co the can nhieu buoc đe hoan thanh mot phep tinh hon mot chuong trinh kem thanh lich hon. Vi du su dung thuat toan Euclid xuat hien ben duoi.
May tinh, cac mo hinh tinh toan: May tinh (hay "may tinh" cua con nguoi ) la mot loai may bi han che, mot "thiet bi co khi xac đinh roi rac"  lam theo huong dan cua no mot cach mu quang. Cac mo hinh so khai cua Melzak va Lambek  giam khai niem nay thanh bon yeu to: (i) cac vi tri roi rac, de phan biet, (ii) cac bo đem roi rac, khong the phan biet đuoc  (iii) mot tac nhan, va (iv) mot danh sach cac huong dan co hieu qua so voi kha nang cua tac nhan.
Minsky mo ta mot bien the phu hop hon cua mo hinh "ban tinh" cua Lambek trong "Cac co so rat đon gian đe tinh toan " cua ong. May cua Minsky tien hanh tuan tu thong qua nam (hoac sau, tuy thuoc vao cach đem) lenh, tru khi IF – THEN GOTO co đieu kien hoac GOTO khong đieu kien thay đoi luong chuong trinh khong theo trinh tu. Ben canh HALT, may cua Minsky bao gom ba hoat đong gan (thay the, thay the) : ZERO (vi du: noi dung cua vi tri đuoc thay the bang 0: L ← 0), SUCCESSOR (vi du: L ← L + 1) va DECREMENT (vi du: L ← L - 1). Hiem khi mot lap trinh vien phai viet "ma" voi mot tap lenh gioi han nhu vay. Nhung Minsky cho thay (Melzak va Lambek cung vay) rang co may cua anh ay la Turing hoan chinh voi chi bon loai lenh chung: GOTO co đieu kien, GOTO vo đieu kien, gan / thay the / thay the va HALT. Tuy nhien, mot so huong dan gan khac nhau (vi du: DECREMENT, INCREMENT va ZERO / CLEAR / EMPTY cho may Minsky) cung đuoc yeu cau đoi voi tinh nang Turing-completeness; đac điem ky thuat chinh xac cua chung phan nao tuy thuoc vao nha thiet ke. GOTO vo đieu kien la mot su tien loi; no co the đuoc xay dung bang cach khoi tao mot vi tri chuyen dung bang 0, vi du nhu lenh "Z ← 0"; sau đo lenh IF Z = 0 THEN GOTO xxx la vo đieu kien.
Mo phong thuat toan: ngon ngu may tinh (computor): Knuth khuyen nguoi đoc rang "cach tot nhat đe hoc mot thuat toan la thu no.. Lay ngay giay but va lam viec voi mot vi du". Nhung nhung gi ve mot mo phong hoac thuc hien cac đieu thuc te? Lap trinh vien phai dich thuat toan sang ngon ngu ma trinh mo phong / may tinh / trinh bien dich co the thuc thi mot cach hieu qua. Stone đua ra mot vi du ve đieu nay: khi tinh toan can bac hai, nguoi tinh toan phai biet cach lay can bac hai. Neu khong, thi thuat toan, đe co hieu qua, phai cung cap mot bo quy tac đe trich xuat can bac hai.
Đieu nay co nghia la lap trinh vien phai biet mot "ngon ngu" co hieu qua so voi tac nhan tinh toan muc tieu (may tinh). Nhung mo hinh nao nen đuoc su dung cho mo phong? Van Emde Boas nhan xet "ngay ca khi chung ta đat ly thuyet phuc tap dua tren ly thuyet truu tuong thay vi may moc cu the, su tuy tien trong viec lua chon mo hinh van con. Chinh tai thoi điem nay, khai niem mo phong đi vao ". Khi toc đo đang đuoc đo, tap lenh quan trong. Vi du, chuong trinh con trong thuat toan Euclid đe tinh phan con lai se thuc thi nhanh hon nhieu neu lap trinh vien co san lenh " modulus " thay vi chi phep tru (hoac te hon: chi "giam dan" cua Minsky).
Lap trinh co cau truc, cau truc chuan: Theo luan điem cua Church – Turing, bat ky thuat toan nao cung co the đuoc tinh toan bang mot mo hinh đuoc goi la Turing hoan chinh va theo cac minh chung cua Minsky, tinh đay đu cua Turing chi yeu cau bon loai lenh — GOTO co đieu kien, GOTO khong đieu kien, phep gan, HALT. Kemeny va Kurtz nhan thay rang, trong khi viec su dung "vo ky luat" GOTO vo đieu kien va IF-THEN GOTO co đieu kien co the dan đen " ma spaghetti ", mot lap trinh vien co the viet cac chuong trinh co cau truc chi bang cac huong dan nay; mat khac "cung co the, va khong qua kho, đe viet cac chuong trinh co cau truc toi bang mot ngon ngu co cau truc". Tausworthe tang cuong ba cau truc kinh đien Bohm-Jacopini: SEQUENCE, IF-THEN-ELSE va WHILE-DO, voi hai cau truc khac: DO-WHILE va CASE. Mot loi ich bo sung cua chuong trinh co cau truc la no tu cho minh cac bang chung ve tinh đung đan bang cach su dung quy nap toan hoc.
Cac ky hieu luu đo hop quy: Phu ta đo hoa đuoc goi la luu đo, đua ra cach mo ta va ghi lai mot thuat toan (va mot chuong trinh may tinh cua mot thuat toan). Giong nhu quy trinh chuong trinh cua may Minsky, luu đo luon bat đau o đau trang va tiep tuc xuong. Cac ky hieu chinh cua no chi co bon: mui ten co huong hien thi luong chuong trinh, hinh chu nhat (SEQUENCE, GOTO), hinh thoi (IF-THEN-ELSE) va dau cham (OR-tie). Cac cau truc kinh đien Bohm – Jacopini đuoc tao ra tu nhung hinh dang nguyen thuy nay. Cau truc con co the "long" trong hinh chu nhat, nhung chi khi mot loi ra duy nhat xay ra tu cau truc thuong tang. Cac ky hieu va cach su dung chung đe xay dung cac cau truc chinh tac đuoc the hien trong so đo.


Vi du = Vi du thuat toan =
Mot trong nhung thuat toan đon gian nhat la tim so lon nhat trong danh sach cac so co thu tu ngau nhien. Tim loi giai yeu cau nhin vao moi so trong danh sach. Tu đo dan đen mot thuat toan đon gian, co the đuoc neu trong phan mo ta cap cao bang van xuoi tieng Anh, nhu:
Mo ta cap cao:

Neu khong co so nao trong tap hop thi khong co so cao nhat.
Gia su so đau tien trong tap hop la so lon nhat trong tap hop.
Voi moi so con lai trong tap hop: neu so nay lon hon so lon nhat hien tai thi coi so nay la so lon nhat trong tap hop.
Khi khong con so nao trong tap hop đe lap lai, hay coi so lon nhat hien tai la so lon nhat cua tap hop.
Ban mo ta chinh thuc: Đuoc viet bang van xuoi nhung gan voi ngon ngu cap cao cua chuong trinh may tinh hon nhieu, sau đay la cach ma hoa chinh thuc hon cua thuat toan bang ma gia hoac ma pidgin:
Input: A list of numbers L.
Output: The largest number in the list L.

 if L.size = 0 return null
 largest ← L[0]
 for each item in L, do
if item > largest, then
 largest ← item
 return largest


= Thuat toan Euclid =

Thuat toan cua Euclid đe tinh uoc so chung lon nhat (UCLN) cho hai so xuat hien duoi dang Menh đe II trong Quyen VII ("Ly thuyet so co ban") cua tac pham Co so cua ong. Do đo, Euclid đat ra van đe: "Cho hai so khong nguyen to voi nhau, hay tim so đo chung lon nhat cua chung". Ong đinh nghia "Mot so [la] mot vo so bao gom cac đon vi": mot so đem, mot so nguyen duong khong bao gom so khong. Đe "đo" la đat mot chieu dai ngan s lien tiep (q lan) len tren chieu dai l cho đen khi phan con lai la r nho hon chieu dai ngan s.  Noi cach hien đai, phan du r = l - q × s, q la thuong so, hoac phan du r la "mođun", phan nguyen con lai sau phep chia.
Đe phuong phap Euclid thanh cong, đo dai bat đau phai thoa man hai yeu cau: (i) đo dai khong đuoc bang 0, VA (ii) phep tru phai “hop le”; tuc la, mot phep thu phai đam bao rang so nho hon trong hai so bi tru đi so lon hon (hoac hai so co the bang nhau đe phep tru cua chung cho ket qua bang khong).
Chung minh ban đau cua Euclid bo sung them mot yeu cau thu ba: hai đo dai khong đuoc nguyen to voi nhau. Euclid đa quy đinh đieu nay đe ong co the xay dung mot bang chung rut gon la vo ly rang so đo chung cua hai so tren thuc te la lon nhat. Trong khi thuat toan cua Nicomachus cung giong nhu thuat toan cua Euclid, khi cac so nguyen to voi nhau, no mang lai so "1" cho so đo chung cua chung. Vi vay, chinh xac ma noi, sau đay thuc su la thuat toan cua Nicomachus.


= Ngon ngu may tinh cho thuat toan Euclid =
Chi mot so loai lenh đuoc yeu cau đe thuc thi thuat toan Euclid — mot so phep thu logic (GOTO co đieu kien), GOTO khong đieu kien, phep gan (thay the) va phep tru.

Vi tri đuoc ky hieu bang (cac) chu cai viet hoa, vi du: S, A, v.v.
So luong (so) khac nhau o mot vi tri đuoc viet bang (cac) chu cai thuong va (thuong) đuoc ket hop voi ten cua vi tri. Vi du, vi tri L o đau co the chua so l = 3009.


= Mot chuong trinh đon gian cho thuat toan Euclid =

Thuat toan sau đay đuoc đong khung nhu la phien ban bon buoc cua Knuth cua Euclid's va Nicomachus, nhung thay vi su dung phep chia đe tim phan du, no su dung cac phep tru lien tiep cua đo dai s tu đo dai con lai r cho đen khi r nho hon s. Mo ta cap cao, đuoc in đam, đuoc phong theo Knuth 1973: 2–4:
ĐAU VAO:
1 [Into two locations L and S put the numbers l and s that represent the two lengths]: INPUT L, S
2 [Initialize R: make the remaining length r equal to the starting/initial/input length l]: R ← L
E0: [Đam bao r ≥ s. ]
3 [Ensure the smaller of the two numbers is in S and the larger in R]: IF R > S THEN  the contents of L is the larger number so skip over the exchange-steps 4, 5 and 6:  GOTO step 6 ELSE  swap the contents of R and S.
4  L ← R (this first step is redundant, but is useful for later discussion).
5  R ← S
6  S ← L
E1: [Tim phan du]: Cho đen khi đo dai con lai r trong R nho hon đo dai ngan hon s trong S, lap đi lap lai phep tru so đo s trong S voi đo dai con lai r trong R.
7 IF S > R THEN  done measuring so  GOTO 10 ELSE  measure again,
8  R ← R − S
9  [Remainder-loop]:  GOTO 7.
E2: [Phan du co bang 0? ]: HOAC (i) so đo cuoi cung la chinh xac, phan con lai trong R bang 0 va chuong trinh co the tam dung, HOAC (ii) thuat toan phai tiep tuc: so đo cuoi cung đe lai phan du trong R nho hon so đo trong S.
10 IF R = 0 THEN done so GOTO step 15  ELSE CONTINUE TO step 11,
E3: [Đao vi tri s va r ]: Điem mau chot cua thuat toan Euclid. Su dung phan du r đe đo so truoc đo nho hon s; L phuc vu nhu mot kho luu tru tam thoi.
11 L ← R
12 R ← S
13 S ← L
14 [Repeat the measuring process]:  GOTO 7
ĐAU RA:
15 [Done. S contains the greatest common divisor]:  PRINT S
XONG:
16 HALT, END, STOP.


= Mot chuong trinh đon gian cho thuat toan Euclid =
Phien ban sau cua thuat toan Euclid chi yeu cau sau lenh cot loi đe thuc hien muoi ba lenh đuoc yeu cau boi "chuong trinh chua thanh lich"; te hon nua la "chuong trinh chua thanh lich" yeu cau nhieu loai huong dan hon. [lam ro] Ban co the tim thay so đo cua "Thanh lich" o đau bai viet nay. Trong ngon ngu BASIC (khong co cau truc), cac buoc đuoc đanh so, va lenh LET [] = [] la lenh gan đuoc ky hieu bang ←.Cach "chuong trinh thanh lich" hoat đong: Thay cho "vong lap Euclid" ben ngoai, "Elegant" di chuyen qua lai giua hai "co-vong lap", mot vong lap A> B tinh A ← A - B va mot vong lap B ≤ A tinh toan B ← B - A. Đieu nay hoat đong boi vi, khi cuoi cung gia tri nho nhat M nho hon hoac bang dai con S (Chenh lech = Minuend - Subtrahend), minuend co the tro thanh s (chieu dai đo moi) va subtrahend co the tro thanh r moi (đo dai đuoc đo); noi cach khac, "y nghia" cua phep tru đao nguoc.
Phien ban sau co the đuoc su dung voi cac ngon ngu huong đoi tuong:


= Kiem tra cac thuat toan Euclid =
Mot thuat toan co lam đuoc nhung gi ma tac gia cua no muon no lam khong? Mot so truong hop thu nghiem thuong cung cap mot so tin cay ve chuc nang cot loi. Nhung cac thu nghiem la khong đu. Đoi voi cac truong hop thu nghiem, mot nguon  su dung 3009 va 884. Knuth đe xuat 40902, 24140. Mot truong hop thu vi khac la hai so nguyen to cung nhau 14157 va 5950.
Nhung "truong hop ngoai le"  phai đuoc xac đinh va thu nghiem. Lieu "Inelegant" co thuc hien đung khi R> S, S> R, R = S khong? Cung vay cho chuong trinh "Thanh lich": B> A, A> B, A = B? (Co cho tat ca). Đieu gi xay ra khi mot so bang 0, ca hai so đeu bang khong? ("Chua thanh lich" roi vao vong lap vinh vien trong cac truong hop tren; "Thanh lich" roi vao vong lap vinh vien khi A = 0.) Đieu gi xay ra neu nguoi dung nhap so am ? So phan so? Neu cac so đau vao, tuc la mien cua ham đuoc tinh toan boi thuat toan / chuong trinh, chi bao gom cac so nguyen duong bao gom ca so 0, thi cac loi o so 0 chi ra rang thuat toan (va chuong trinh khoi tao no) la mot ham rieng phan chu khong phai mot ham tong. Mot that bai đang chu y do cac ngoai le kieu nhu vay la su co ten lua Ariane 5 Flight 501 (ngay 4 thang 6 nam 1996).
Chung minh tinh đung đan cua chuong trinh bang cach su dung quy nap toan hoc: Knuth chung minh viec ap dung quy nap toan hoc cho phien ban "mo rong" cua thuat toan Euclid va ong đe xuat "mot phuong phap chung ap dung đe chung minh tinh hop le cua bat ky thuat toan nao". Tausworthe đe xuat rang thuoc đo đo phuc tap cua mot chuong trinh la đo dai cua bang chung tinh đung đan cua no.


= Đo luong va cai thien cac thuat toan Euclid =
Thanh lich (nho gon) so voi tot (toc đo): Chi voi sau lenh cot loi, "Thanh lich" la chien thang ro rang, so voi "Khong thanh lich" voi 13 lenh. Tuy nhien, "Khong thanh lich" nhanh hon (no đen HALT trong it buoc hon). Phan tich thuat toan  chi ra ly do tai sao lai nhu vay: "Thanh lich" thuc hien hai phep thu đieu kien trong moi vong tru, trong khi "Khong thanh lich" chi thuc hien mot phep thu. Vi thuat toan (thuong) yeu cau nhieu lan lap lai, nen trung binh se lang phi nhieu thoi gian đe thuc hien "B = 0?" kiem tra chi can thiet sau khi phan con lai đuoc tinh toan.
Cac thuat toan co the đuoc cai thien khong?: Mot khi lap trinh vien đanh gia mot chuong trinh "phu hop" va "hieu qua" - nghia la no tinh toan chuc nang ma tac gia cua no du đinh - thi cau hoi se tro thanh, lieu no co the đuoc cai thien khong?
Co the cai thien đo nho gon cua "Khong thanh lich" bang cach loai bo nam buoc. Nhung Chaitin đa chung minh rang viec nen mot thuat toan khong the đuoc tu đong hoa bang mot thuat toan tong quat; đung hon, no chi co the đuoc thuc hien theo kinh nghiem; tuc la, bang cach tim kiem đay đu, thu va sai, thong minh, sang suot, ap dung suy luan quy nap, v.v. Quan sat cac buoc 4, 5 va 6 đuoc lap lai trong cac buoc 11, 12 va 13. So sanh voi "Thanh lich" cung cap goi y rang cac buoc nay, cung voi cac buoc 2 va 3, co the bi loai bo. Đieu nay lam giam so luong lenh cot loi tu 13 xuong 8, lam cho no "thanh lich" hon "Thanh lich", voi chin buoc.
Toc đo cua "Thanh lich" co the đuoc cai thien bang cach di chuyen "B = 0?" kiem tra ben ngoai cua hai vong tru. Thay đoi nay yeu cau bo sung ba lenh (B = 0 ?, A = 0 ?, GOTO). Bay gio "Thanh lich" tinh toan cac so vi du nhanh hon; cho du đieu nay luon đung đoi voi bat ky A, B va R, S nao cho truoc hay khong se yeu cau mot phan tich chi tiet.


Đoc them Đo phuc tap thuat toan
May truy tim du lieu
Thuat toan sap xep


Tham khao