stanford-oval/wikipedia huggingface dataset:
Thuật toán

Lưu đồ thuật toán (thuật toán Euclid) để tính ước số chung lớn nhất (ưcln) của hai số a và b ở các vị trí có tên A và B. Thuật toán tiến hành bằng các phép trừ liên tiếp trong hai vòng lặp: NẾU phép thử B ≥ A cho kết quả "đúng" (chính xác hơn, số b ở vị trí B lớn hơn hoặc bằng số a ở vị trí A) thì thuật toán chỉ định B ← B - A (nghĩa là số b - a thay thế b cũ). Tương tự, IF A> B, THEN A ← A - B. Quá trình kết thúc khi (nội dung của) B bằng 0, tạo ra ưcln trong A. (Thuật toán bắt nguồn từ Scott 2009: 13; các ký hiệu và kiểu vẽ từ Tausworthe 1977).
Trong toán học và khoa học máy tính, một thuật toán, còn gọi là giải thuật, là một tập hợp hữu hạn các hướng dẫn được xác định rõ ràng, có thể thực hiện được bằng máy tính, thường để giải quyết một lớp vấn đề hoặc để thực hiện một phép tính. Các thuật toán luôn rõ ràng và được sử dụng chỉ rõ việc thực hiện các phép tính, xử lý dữ liệu, suy luận tự động và các tác vụ khác.
Là một phương pháp hiệu quả, một thuật toán có thể được biểu diễn trong một khoảng không gian và thời gian hữu hạn, và bằng một ngôn ngữ hình thức được xác định rõ ràng  để tính toán một hàm số. Bắt đầu từ trạng thái ban đầu và đầu vào ban đầu (có thể trống), các hướng dẫn mô tả một phép tính, khi được thực thi, sẽ tiến hành qua một số  hữu hạn các trạng thái kế tiếp được xác định rõ, cuối cùng tạo ra "đầu ra"  và chấm dứt ở trạng thái kết thúc cuối cùng. Sự chuyển đổi từ trạng thái này sang trạng thái tiếp theo không nhất thiết phải mang tính xác định; một số thuật toán, được gọi là thuật toán ngẫu nhiên, kết hợp đầu vào ngẫu nhiên.
Khái niệm thuật toán đã tồn tại từ thời cổ đại. Các thuật toán số học, chẳng hạn như thuật toán chia, được sử dụng bởi các nhà toán học Babylon cổ đại vào khoảng 2500 TCN và các nhà toán học Ai Cập vào khoảng 1550 TCN. Các nhà toán học Hy Lạp sau đó đã sử dụng các thuật toán trong sàng Eratosthenes để tìm số nguyên tố, và thuật toán Euclide để tìm ước chung lớn nhất của hai số. Các nhà toán học Ả Rập như al-Kindi vào thế kỷ thứ 9 đã sử dụng các thuật toán mật mã để phá mã, dựa trên phân tích tần số.
Bản thân từ thuật toán (algorithm) từ bắt nguồn từ nhà toán học thế kỷ thứ 9 Muḥammad ibn Mūsā al-Khwārizmī, tên ông được Latinh hóa thành Algoritmi. Việc chính thức hóa một phần những gì sẽ trở thành khái niệm thuật toán hiện đại bắt đầu với nỗ lực giải Entscheidungsproblem (vấn đề quyết định) do David Hilbert đặt ra vào năm 1928. Các công thức hóa sau này được đóng khung như những nỗ lực để xác định " khả năng tính toán hiệu quả "  hoặc "phương pháp hiệu quả". Những công thức hóa đó bao gồm các hàm đệ quy Gödel - Herbrand - Kleene của các năm 1930, 1934 và 1935, phép tính lambda của Alonzo Church năm 1936, Công thức 1 của Emil Post năm 1936 và các máy Turing của Alan Turing năm 1936–37 và 1939.
Định nghĩa không chính thức

Một định nghĩa không chính thức có thể là "một tập hợp các quy tắc xác định chính xác một chuỗi hoạt động", mà sẽ bao gồm tất cả các chương trình máy tính (bao gồm cả các chương trình không thực hiện phép tính số) và (ví dụ) bất kỳ thủ tục hành chính quy định nào  hoặc công thức nấu ăn.
Nói chung, một chương trình chỉ là một thuật toán nếu cuối cùng nó dừng lại  - mặc dù các vòng lặp vô hạn đôi khi có thể chấp nhận được.
Một ví dụ nguyên mẫu của một thuật toán là thuật toán Euclid, được sử dụng để xác định ước chung lớn nhất của hai số nguyên; một ví dụ được mô tả bằng lưu đồ ở trên và là ví dụ trong phần sau.
Boolos, Jeffrey & 1974, 1999Lỗi harv: không có mục tiêu: CITEREFBoolosJeffrey1999 (trợ giúp) đưa ra một định nghĩa không chính thức cho thuật toán như sau:
Không một con người nào có thể viết đủ nhanh, đủ dài, hoặc đủ nhỏ † († "nhỏ hơn và nhỏ hơn mà không có giới hạn... bạn đang cố viết trên phân tử, trên nguyên tử, trên electron") để liệt kê tất cả các thành viên của vô số thiết lập bằng cách viết ra tên của họ, cái khác, trong một số ký hiệu. Nhưng con người có thể làm điều gì đó hữu ích không kém, trong trường hợp có nhiều tập hợp vô hạn nhất định: Họ có thể đưa ra các chỉ dẫn rõ ràng để xác định phần tử thứ n của tập hợp, cho n hữu hạn tùy ý. Những hướng dẫn như vậy phải được đưa ra khá rõ ràng, dưới hình thức mà chúng có thể được tuân theo bởi một máy tính toán hoặc bởi một con người chỉ có khả năng thực hiện các thao tác rất cơ bản trên các ký hiệu.
"Tập hợp vô hạn liệt kê được" là tập hợp mà các phần tử của nó có thể được song ánh tương ứng 1-1 với các số nguyên. Vì vậy, Boolos và Jeffrey đang nói rằng một thuật toán ngụ ý hướng dẫn cho một quá trình "tạo" các số nguyên đầu ra từ một số nguyên "đầu vào" tùy ý hoặc các số nguyên, theo lý thuyết, có thể lớn tùy ý. Ví dụ: một thuật toán có thể là một phương trình đại số chẳng hạn như y = m + n (tức là hai "biến đầu vào" tùy ý m và n tạo ra đầu ra y), nhưng các nỗ lực của các tác giả khác nhau để xác định khái niệm cho thấy rằng từ đó ngụ ý nhiều hơn thế này, một cái gì đó theo thứ tự của (cho ví dụ bổ sung):
Các hướng dẫn chính xác (bằng ngôn ngữ mà "máy tính" hiểu được)  để có một quy trình "tốt"  nhanh, hiệu quả, chỉ định các "động thái" của "máy tính" (máy hoặc con người, được trang bị bên trong thông tin và khả năng)  để tìm, giải mã và sau đó xử lý các số nguyên / ký hiệu đầu vào tùy ý m và n, ký hiệu + và = … và "hiệu quả"
sản xuất ra, trong một thời gian "hợp lý", đầu ra-số nguyên y tại một nơi được chỉ định và với định dạng được chỉ định.
Khái niệm thuật toán cũng được sử dụng để định nghĩa khái niệm về khả năng giải mã — một khái niệm trung tâm để giải thích cách các hệ thống hình thức ra đời bắt đầu từ một tập hợp nhỏ các tiên đề và quy tắc. Về mặt logic, thời gian mà một thuật toán yêu cầu để hoàn thành không thể đo được, vì nó dường như không liên quan đến kích thước vật lý thông thường. Từ sự không chắc chắn như vậy, đặc trưng cho công việc đang diễn ra, dẫn đến việc không có định nghĩa thuật toán phù hợp với cả cách sử dụng thuật ngữ này một cách cụ thể (theo một nghĩa nào đó)
Hình thức hóa

Các thuật toán rất cần thiết cho cách máy tính xử lý dữ liệu. Nhiều chương trình máy tính chứa các thuật toán trình bày chi tiết các hướng dẫn cụ thể mà máy tính phải thực hiện — theo một thứ tự cụ thể — để thực hiện một nhiệm vụ cụ thể, chẳng hạn như tính tiền lương của nhân viên hoặc in phiếu điểm của học sinh. Vì vậy, một thuật toán có thể được coi là bất kỳ chuỗi hoạt động nào có thể được mô phỏng bởi một hệ thống hoàn chỉnh Turing. Các tác giả khẳng định luận điểm này bao gồm Minsky (1967), Savage (1987) và Gurevich (2000):
Minsky: "Nhưng chúng tôi cũng sẽ duy trì, với Turing... rằng bất kỳ thủ tục nào có thể" tự nhiên "được gọi là hiệu quả, trên thực tế, có thể được thực hiện bởi một chiếc máy (đơn giản). Mặc dù điều này có vẻ cực đoan, nhưng những lập luận… ủng hộ nó thì khó có thể bác bỏ ”.
Gurevich: “… Lập luận không chính thức của Turing ủng hộ luận điểm của ông ấy biện minh cho luận điểm mạnh mẽ hơn: mọi thuật toán đều có thể được mô phỏng bởi máy Turing… theo Savage [1987], thuật toán là một quá trình tính toán được xác định bởi máy Turing".
Máy Turing có thể xác định các quy trình tính toán không kết thúc. Các định nghĩa không chính thức của thuật toán thường yêu cầu thuật toán luôn kết thúc. Yêu cầu này làm cho nhiệm vụ quyết định xem một thủ tục chính thức có phải là một thuật toán không trong trường hợp chung - do một định lý chính của lý thuyết tính toán được gọi là bài toán dừng.
Thông thường, khi một thuật toán được liên kết với xử lý thông tin, dữ liệu có thể được đọc từ nguồn đầu vào, được ghi vào thiết bị đầu ra và được lưu trữ để xử lý thêm. Dữ liệu được lưu trữ được coi là một phần của trạng thái bên trong của thực thể thực hiện thuật toán. Trong thực tế, trạng thái được lưu trữ trong một hoặc nhiều cấu trúc dữ liệu.
Đối với một số quá trình tính toán này, thuật toán phải được xác định chặt chẽ: được chỉ định theo cách nó áp dụng trong mọi trường hợp có thể phát sinh. Điều này có nghĩa là mọi bước có điều kiện phải được xử lý một cách có hệ thống, theo từng trường hợp cụ thể; các tiêu chí cho từng trường hợp phải rõ ràng (và có thể tính toán được).
Bởi vì một thuật toán là một danh sách chính xác của các bước chính xác, thứ tự tính toán luôn quan trọng đối với hoạt động của thuật toán. Các hướng dẫn thường được giả định là được liệt kê rõ ràng và được mô tả là bắt đầu "từ trên cùng" và đi "xuống dưới cùng" —một ý tưởng được mô tả chính thức hơn bằng luồng kiểm soát.
Cho đến nay, cuộc thảo luận về việc chính thức hóa một thuật toán đã giả định các tiền đề của lập trình mệnh lệnh. Đây là quan niệm phổ biến nhất - một quan niệm cố gắng mô tả một nhiệm vụ bằng các phương tiện "máy móc", rời rạc. Duy nhất cho quan niệm về các thuật toán chính thức hóa này là phép toán gán, đặt giá trị của một biến. Nó bắt nguồn từ trực giác của " bộ nhớ " như một bàn di chuột. Dưới đây là một ví dụ về sự phân công như vậy.
Đối với một số quan niệm thay thế về những gì tạo thành một thuật toán, hãy xem lập trình hàm và lập trình logic.
Hình thức hóa > Diễn đạt thuật toán

Các thuật toán có thể được thể hiện bằng nhiều loại ký hiệu, bao gồm ngôn ngữ tự nhiên, mã giả, lưu đồ, biểu đồ drakon, ngôn ngữ lập trình hoặc bảng điều khiển (được xử lý bởi trình thông dịch). Các biểu thức ngôn ngữ tự nhiên của các thuật toán có xu hướng dài dòng và mơ hồ, và hiếm khi được sử dụng cho các thuật toán phức tạp hoặc kỹ thuật. Mã giả, lưu đồ, biểu đồ drakon và bảng điều khiển là những cách có cấu trúc để thể hiện các thuật toán tránh nhiều sự mơ hồ thường gặp trong các câu lệnh dựa trên ngôn ngữ tự nhiên. Các ngôn ngữ lập trình chủ yếu nhằm mục đích thể hiện các thuật toán dưới dạng có thể được thực thi bởi máy tính, nhưng cũng thường được sử dụng như một cách để định nghĩa hoặc tài liệu hóa các thuật toán.
Có thể có nhiều cách biểu diễn khác nhau và người ta có thể thể hiện một chương trình máy Turing nhất định dưới dạng một chuỗi các bảng máy (xem máy trạng thái hữu hạn, bảng chuyển đổi trạng thái và bảng điều khiển để biết thêm), dưới dạng lưu đồ và biểu đồ drakon (xem biểu đồ trạng thái để biết thêm), hoặc như một dạng mã máy thô sơ hoặc mã lắp ráp được gọi là "bộ tứ" (xem máy Turing để biết thêm).
Các đại diện của thuật toán có thể được phân loại thành ba cấp độ được chấp nhận của mô tả máy Turing, như sau:
Thiết kế

Thiết kế thuật toán đề cập đến một phương pháp hoặc một quy trình toán học để giải quyết vấn đề và các thuật toán kỹ thuật. Việc thiết kế các thuật toán là một phần của nhiều lý thuyết giải pháp nghiên cứu hoạt động, chẳng hạn như lập trình động và chia để trị. Các kỹ thuật thiết kế và triển khai các thiết kế thuật toán còn được gọi là các mẫu thiết kế thuật toán, với các ví dụ bao gồm mẫu phương pháp mẫu và mẫu trang trí.
Một trong những khía cạnh quan trọng nhất của thiết kế thuật toán nằm ở việc tạo ra thuật toán có thời gian chạy hiệu quả, còn được gọi là Big O của nó.
Các bước điển hình trong quá trình phát triển thuật toán:
Định nghĩa vấn đề
Phát triển một mô hình
Đặc điểm kỹ thuật của thuật toán
Thiết kế một thuật toán
Kiểm tra tính đúng đắn của thuật toán
Phân tích thuật toán
Thực hiện thuật toán
Chương trình thử nghiệm
Viết tài liệu
Thực hiện

Hầu hết các thuật toán được thiết kế để thực hiện như các chương trình máy tính. Tuy nhiên, các thuật toán cũng được thực hiện bằng các phương tiện khác, chẳng hạn như trong mạng nơ-ron sinh học (ví dụ, não người thực hiện phép tính số học hoặc côn trùng đang tìm kiếm thức ăn), trong mạch điện hoặc trong một thiết bị cơ khí.
Ví dụ > Ví dụ thuật toán

Một trong những thuật toán đơn giản nhất là tìm số lớn nhất trong danh sách các số có thứ tự ngẫu nhiên. Tìm lời giải yêu cầu nhìn vào mọi số trong danh sách. Từ đó dẫn đến một thuật toán đơn giản, có thể được nêu trong phần mô tả cấp cao bằng văn xuôi tiếng Anh, như:
Mô tả cấp cao:
Nếu không có số nào trong tập hợp thì không có số cao nhất.
Giả sử số đầu tiên trong tập hợp là số lớn nhất trong tập hợp.
Với mỗi số còn lại trong tập hợp: nếu số này lớn hơn số lớn nhất hiện tại thì coi số này là số lớn nhất trong tập hợp.
Khi không còn số nào trong tập hợp để lặp lại, hãy coi số lớn nhất hiện tại là số lớn nhất của tập hợp.
Bán mô tả chính thức: Được viết bằng văn xuôi nhưng gần với ngôn ngữ cấp cao của chương trình máy tính hơn nhiều, sau đây là cách mã hóa chính thức hơn của thuật toán bằng mã giả hoặc mã 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
Ví dụ > Thuật toán Euclid

Thuật toán của Euclid để tính ước số chung lớn nhất (ƯCLN) cho hai số xuất hiện dưới dạng Mệnh đề II trong Quyển VII ("Lý thuyết số cơ bản") của tác phẩm Cơ sở của ông. Do đó, Euclid đặt ra vấn đề: "Cho hai số không nguyên tố với nhau, hãy tìm số đo chung lớn nhất của chúng". Ông định nghĩa "Một số [là] một vô số bao gồm các đơn vị": một số đếm, một số nguyên dương không bao gồm số không. Để "đo" là đặt một chiều dài ngắn s liên tiếp (q lần) lên trên chiều dài l cho đến khi phần còn lại là r nhỏ hơn chiều dài ngắn s.  Nói cách hiện đại, phần dư r = l - q × s, q là thương số, hoặc phần dư r là "môđun", phần nguyên còn lại sau phép chia.
Để phương pháp Euclid thành công, độ dài bắt đầu phải thỏa mãn hai yêu cầu: (i) độ dài không được bằng 0, VÀ (ii) phép trừ phải “hợp lệ”; tức là, một phép thử phải đảm bảo rằng số nhỏ hơn trong hai số bị trừ đi số lớn hơn (hoặc hai số có thể bằng nhau để phép trừ của chúng cho kết quả bằng không).
Chứng minh ban đầu của Euclid bổ sung thêm một yêu cầu thứ ba: hai độ dài không được nguyên tố với nhau. Euclid đã quy định điều này để ông có thể xây dựng một bằng chứng rút gọn là vô lý rằng số đo chung của hai số trên thực tế là lớn nhất. Trong khi thuật toán của Nicomachus cũng giống như thuật toán của Euclid, khi các số nguyên tố với nhau, nó mang lại số "1" cho số đo chung của chúng. Vì vậy, chính xác mà nói, sau đây thực sự là thuật toán của Nicomachus.
Ví dụ > Ngôn ngữ máy tính cho thuật toán Euclid

Chỉ một số loại lệnh được yêu cầu để thực thi thuật toán Euclid — một số phép thử logic (GOTO có điều kiện), GOTO không điều kiện, phép gán (thay thế) và phép trừ.
Vị trí được ký hiệu bằng (các) chữ cái viết hoa, ví dụ: S, A, v.v.
Số lượng (số) khác nhau ở một vị trí được viết bằng (các) chữ cái thường và (thường) được kết hợp với tên của vị trí. Ví dụ, vị trí L ở đầu có thể chứa số l = 3009.
Ví dụ > Một chương trình đơn giản cho thuật toán Euclid

Thuật toán sau đây được đóng khung như là phiên bản bốn bước của Knuth của Euclid's và Nicomachus, nhưng thay vì sử dụng phép chia để tìm phần dư, nó sử dụng các phép trừ liên tiếp của độ dài s từ độ dài còn lại r cho đến khi r nhỏ hơn s. Mô tả cấp cao, được in đậm, được phỏng theo Knuth 1973: 2–4:
ĐẦU VÀO:
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: [Đảm bảo 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: [Tìm phần dư]: Cho đến khi độ dài còn lại r trong R nhỏ hơn độ dài ngắn hơn s trong S, lặp đi lặp lại phép trừ số đo s trong S với độ dài còn lại 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: [Phần dư có bằng 0? ]: HOẶC (i) số đo cuối cùng là chính xác, phần còn lại trong R bằng 0 và chương trình có thể tạm dừng, HOẶC (ii) thuật toán phải tiếp tục: số đo cuối cùng để lại phần dư trong R nhỏ hơn số đo trong S.
10 IF R = 0 THEN done so GOTO step 15  ELSE CONTINUE TO step 11,
E3: [Đảo vị trí s và r ]: Điểm mấu chốt của thuật toán Euclid. Sử dụng phần dư r để đo số trước đó nhỏ hơn s; L phục vụ như một kho lưu trữ tạm thời.
11 L ← R
12 R ← S
13 S ← L
14 [Repeat the measuring process]:  GOTO 7
ĐẦU RA:
15 [Done. S contains the greatest common divisor]:  PRINT S
XONG:
16 HALT, END, STOP.
Phiên bản sau của thuật toán Euclid chỉ yêu cầu sáu lệnh cốt lõi để thực hiện mười ba lệnh được yêu cầu bởi "chương trình chưa thanh lịch"; tệ hơn nữa là "chương trình chưa thanh lịch" yêu cầu nhiều loại hướng dẫn hơn. [làm rõ] Bạn có thể tìm thấy sơ đồ của "Thanh lịch" ở đầu bài viết này. Trong ngôn ngữ BASIC (không có cấu trúc), các bước được đánh số, và lệnh LET [] = [] là lệnh gán được ký hiệu bằng ←.
5 REM Euclid's algorithm for greatest common divisor
 6 PRINT "Type two integers greater than 0"
 10 INPUT A,B
 20 IF B=0 THEN GOTO 80
 30 IF A > B THEN GOTO 60
 40 LET B=B-A
 50 GOTO 20
 60 LET A=A-B
 70 GOTO 20
 80 PRINT A
 90 END
Cách "chương trình thanh lịch" hoạt động: Thay cho "vòng lặp Euclid" bên ngoài, "Elegant" di chuyển qua lại giữa hai "co-vòng lặp", một vòng lặp A> B tính A ← A - B và một vòng lặp B ≤ A tính toán B ← B - A. Điều này hoạt động bởi vì, khi cuối cùng giá trị nhỏ nhất M nhỏ hơn hoặc bằng dải con S (Chênh lệch = Minuend - Subtrahend), minuend có thể trở thành s (chiều dài đo mới) và subtrahend có thể trở thành r mới (độ dài được đo); nói cách khác, "ý nghĩa" của phép trừ đảo ngược.

Phiên bản sau có thể được sử dụng với các ngôn ngữ hướng đối tượng:
// Euclid's algorithm for greatest common divisor
int euclidAlgorithm (int A, int B){
 A=Math.abs(A);
 B=Math.abs(B);
 while (B!=0){
   if (A>B) A=A-B;
   else B=B-A;
 }
 return A;
}
Ví dụ > Kiểm tra các thuật toán Euclid

Một thuật toán có làm được những gì mà tác giả của nó muốn nó làm không? Một số trường hợp thử nghiệm thường cung cấp một số tin cậy về chức năng cốt lõi. Nhưng các thử nghiệm là không đủ. Đối với các trường hợp thử nghiệm, một nguồn  sử dụng 3009 và 884. Knuth đề xuất 40902, 24140. Một trường hợp thú vị khác là hai số nguyên tố cùng nhau 14157 và 5950.
Nhưng "trường hợp ngoại lệ"  phải được xác định và thử nghiệm. Liệu "Inelegant" có thực hiện đúng khi R> S, S> R, R = S không? Cũng vậy cho chương trình "Thanh lịch": B> A, A> B, A = B? (Có cho tất cả). Điều gì xảy ra khi một số bằng 0, cả hai số đều bằng không? ("Chưa thanh lịch" rơi vào vòng lặp vĩnh viễn trong các trường hợp trên; "Thanh lịch" rơi vào vòng lặp vĩnh viễn khi A = 0.) Điều gì xảy ra nếu người dùng nhập số âm ? Số phân số? Nếu các số đầu vào, tức là miền của hàm được tính toán bởi thuật toán / chương trình, chỉ bao gồm các số nguyên dương bao gồm cả số 0, thì các lỗi ở số 0 chỉ ra rằng thuật toán (và chương trình khởi tạo nó) là một hàm riêng phần chứ không phải một hàm tổng. Một thất bại đáng chú ý do các ngoại lệ kiểu như vậy là sự cố tên lửa Ariane 5 Flight 501 (ngày 4 tháng 6 năm 1996).
Chứng minh tính đúng đắn của chương trình bằng cách sử dụng quy nạp toán học: Knuth chứng minh việc áp dụng quy nạp toán học cho phiên bản "mở rộng" của thuật toán Euclid và ông đề xuất "một phương pháp chung áp dụng để chứng minh tính hợp lệ của bất kỳ thuật toán nào". Tausworthe đề xuất rằng thước đo độ phức tạp của một chương trình là độ dài của bằng chứng tính đúng đắn của nó.
HMS Proteus

Hai tàu chiến của Hải quân Hoàng gia Anh từng được đặt cái tên HMS Proteus, theo tên thần Proteus trong thần thoại Hy Lạp:
HMS Proteus (1777) là một tàu chiến hạng sáu 26 khẩu pháo, nguyên là tàu Đông Ấn Talbot được mua năm 1777 và bị bán năm 1783
HMS Proteus (N29) là một  tàu ngầm lớp Parthian hạ thủy năm 1929 và bị tháo dỡ năm 1946
Phong Quang

Phong Quang là một xã thuộc huyện Vị Xuyên, tỉnh Hà Giang, Việt Nam.
Địa lý

Xã Phong Quang có vị trí địa lý:
Phía đông giáp thành phố Hà Giang và xã Thuận Hòa
Phía tây giáp xã Phương Tiến và xã Thanh Thủy
Phía nam giáp thành phố Hà Giang
Phía bắc giáp xã Minh Tâm và xã Thuận Hòa.
Xã Phong Quang có diện tích 37,99 km², dân số năm 2019 là 2.647 người, mật độ dân số đạt 70 người/km².
Hành chính

Xã Phong Quang được chia thành 6 thôn.
Lịch sử

Ngày 23 tháng 6 năm 2006, Chính phủ ban hành Nghị định 64/2006/NĐ-CP về việc điều chỉnh 103,4 ha diện tích tự nhiên và 77 nhân khẩu của phường Quang Trung thuộc thị xã Hà Giang (nay là thành phố Hà Giang) về xã Phong Quang thuộc huyện Vị Xuyên quản lý. Sau khi điều chỉnh địa giới hành chính, xã Phong Quang có 3.478,4 ha diện tích tự nhiên và 1.855 nhân khẩu.
Chú thích

1 2  Nghị định 64/2006/NĐ-CP về việc điều chỉnh địa giới hành chính xã, phường của thị xã Hà Giang và huyện Vị Xuyên, tỉnh Hà Giang
1 2  Ban chỉ đạo Tổng điều tra dân số và nhà ở trung ương. “Dân số đến 01 tháng 4 năm 2019 - tỉnh Hà Giang”. Truy cập ngày 28 tháng 8 năm 2020.[liên kết hỏng]
↑  Tổng cục Thống kê
Hội chứng XYY

Hội chứng XYY là một tình trạng di truyền trong đó nam giới có thêm một nhiễm sắc thể Y. Triệu chứng thường là ít. Chúng có thể bao gồm cao hơn trung bình, mụn trứng cá và tăng nguy cơ các vấn đề học tập. Người này thường bình thường, bao gồm cả khả năng sinh sản bình thường.
Tình trạng này thường không được thừa hưởng từ cha mẹ của một người mà là xảy ra do một sự kiện ngẫu nhiên trong quá trình phát triển tế bào tinh trùng. Chẩn đoán bệnh này bằng phân tích nhiễm sắc thể. Có 47 nhiễm sắc thể, thay vì thông thường 46, cho thấy có 47 nhiễm sắc thể với XYY karyotype.
Điều trị có thể bao gồm trị liệu ngôn ngữ hoặc trợ giúp thêm với việc học tập. Kết quả nói chung là tốt. Phòng ngừa bệnh này là không thể. Tình trạng này xảy ra ở khoảng 1 trên 1.000 ca sinh con trai. Nhiều người mắc bệnh này không biết rằng họ có bệnh. Chứng bệnh này được mô tả lần đầu tiên vào năm 1961.
Dấu hiệu và triệu chứng > Đặc điểm thể chất

Những người có 47, XYY karyotype có tốc độ tăng trưởng tăng từ mầm non, với chiều cao trung bình khoảng 7 cm (3") hơn chiều cao chính thức dự kiến. Trong Edinburgh, Scotland, Tám 47 chàng trai có hội chứng XYY sinh 1967-1972 và xác định trong một chương trình sàng lọc sơ sinh đã có chiều cao trung bình 188,1 cm (6'2 ") ở tuổi 18 trong khi chiều cao trung bình của cha họ là 174,1cm (5'8½ "), chiều cao trung bình của mẹ họ là 162,8 cm (5'4")  Sự gia tăng liều lượng gen của XYY đã được mặc nhiên công nhận như một nguyên nhân của tầm vóc tăng trưởng thấy được trong tất cả các bộ ba nhiễm sắc thể: 47, XXX, 47, XXY, và 47, XYY. Việc bị mụn nhiều đã được ghi nhận trong một số rất ít trường hợp báo cáo sớm, nhưng bác sĩ da liễu chuyên về mụn trứng cá hiện nay nghi ngờ sự tồn tại của mụn với bộ ba nhiễm sắc thể 47, XYY.
Kaiserstuhl, Aargau

| Kaiserstuhl |
| --- | --- |

  Huy hiệu

KaiserstuhlXem bản đồ Thụy SĩKaiserstuhlXem bản đồ Bang Aargau
Quốc gia: Thụy Sĩ
Bang: Aargau
Huyện: Zurzach
Diện tích
 • Tổng cộng: 0,32 km2 (12 mi2)
Độ cao: 347 m (1,138 ft)
Dân số (2017-12-31)
 • Tổng cộng: 423
 • Mật độ: 13/km2 (34/mi2)
Mã bưu chính: 5466
Mã SFOS: 043
Giáp với: Fisibach, Hohentengen am Hochrhein (DE-BW), Weiach (ZH)
Website: www.kaiserstuhl.ch   SFSO statistics
Kaiserstuhl là một đô thị ở huyện Zurzach, bang Aargau, Thụy Sĩ.
Kaiserstuhl
Kaiserstuhl
Trichiinae

| Trichiinae |
| --- | --- |
Osmoderma scabra of the Osmodermini
Phân loại khoa học
Giới (regnum): Animalia
Ngành (phylum): Arthropoda
Lớp (class): Insecta
Bộ (ordo): Coleoptera
Liên họ (superfamilia): Scarabaeoidea
Họ (familia): Scarabaeidae
Phân họ (subfamilia): Trichiinae (tranh cãi) John Fleming, 1821
Tribes
  Danh sách  Cryptodontini  Incaini  Osmodermini  Platygeniini  Trichiini  
Danh pháp đồng nghĩa
 Trichiini (but Xem trong bài) 
Trichiinae là một phân họ bọ cánh cứng trong họ Scarabaeidae, nhưng đôi khi chúng được xếp là tông Trichiini trong phân họ Cetoniidae.
Phân loại

Dialithus Parry, 1849
Epitrichius
Giesbertiolus Howden, 1988
Gnorimella
Gnorimus Le Peletier & Serville, 1828
Gnorimus nobilis –
Inca
Lasiotrichius
Osmoderma
Paratrichius
Platygeniops Krikken, 1978
Trichiotinus ** ''[[Trichiotinus affinis]]'' (G. &#x26; P.) [date? parentheses? Who is "G." and "P."?]** ''[[Trichiotinus assimilis]]'' (Kirby) [date? parentheses?] http://bugguide.net/node/view/22486]** ''[[Trichiotinus bibens]]'' (Fabricius) [date? parentheses?] [http://bugguide.net/node/view/10463]** ''[[Trichiotinus lunatulus]]'' (Fabricius) [date? parentheses?] &#x26;ndash; [[Emerald Flower Scarab]] [http://bugguide.net/node/view/5275]
Trichiotinus piger –
Trichius – bee beetles
Trigonopeltastes