✨Lập trình di truyền

Lập trình di truyền

Trong trí tuệ nhân tạo, lập trình di truyền (genetic programming, GP) là một kỹ thuật tiến hóa các chương trình mà ban đầu chưa thích nghi (thường là chương trình ngẫu nhiên) cho đến khi thích nghi được với một nhiệm vụ cụ thể, bằng cách áp dụng các quá trình tương tự di truyền tự nhiên lên quần thể chương trình. Về cơ bản, nó là một kỹ thuật tìm kiếm heuristic thường được mô tả là "leo đồi", tức là tìm kiếm một chương trình tối ưu hoặc ít nhất là phù hợp trong không gian chứa tất cả chương trình.

Các quá trình thực hiện bao gồm: chọn lọc các chương trình tốt nhất để sinh sản (trao đổi chéo) và đột biến dựa trên một thang đo độ thích nghi được định nghĩa trước, thường là trình độ thực hiện đối với nhiệm vụ mong muốn. Quá trình trao đổi chéo bao gồm việc hoán đổi các bộ phận ngẫu nhiên của các cặp được chọn (cặp bố mẹ) để tạo ra các thế hệ con mới và khác biệt trở thành một phần của thế hệ chương trình mới. Đột biến là sự thay thế một bộ phận ngẫu nhiên của chương trình bằng một bộ phận ngẫu nhiên khác. Một số chương trình không được chọn để tái tạo được sao chép từ thế hệ hiện tại sang thế hệ mới. Sau đó, quá trình chọn lọc và các quá trình khác được áp dụng đệ quy cho thế hệ chương trình mới.

Thông thường, các cá thể của mỗi thế hệ mới trên trung bình thường tốt hơn các cá thể của thế hệ trước đó và chương trình tốt nhất thế hệ cũng thường tốt hơn các chương trình tốt nhất thế hệ của các thế hệ trước. Vòng lặp đệ quy được kết thúc khi xuất hiện cá thể chương trình nào đó đạt đến mức độ thành thạo hoặc độ thích nghi được định trước.

Mỗi lần chạy thuật toán có thể và thường xuyên xảy ra sự hội tụ sớm đến điểm cực đại cục bộ nào đó mà không phải là điểm tối ưu toàn cục hoặc thậm chí không phải là nghiệm tốt. Để có được một kết quả rất tốt thường đòi hỏi rất nhiều lần chạy (từ hàng chục tới hàng trăm lần). Ngoài ra, có thể phải tăng kích thước quần thể ban đầu và sự biến đổi của các cá thể để tránh nhiễm gen xấu.

Lịch sử

Đề xuất tiến hóa các chương trình đầu tiên trong lịch sử có lẽ là của Alan Turing vào năm 1950. Phải tới 25 năm sau, sự xuất bản cuốn sách "Sự thích nghi trong các hệ thống tự nhiên và nhân tạo" của John Holland mới đặt ra những nền móng lý thuyết và thực nghiệm của ngành khoa học này. Năm 1981, Richard Forsyth đã chứng minh sự tiến hóa thành công của các chương trình nhỏ, được biểu diễn dưới dạng cây, để thực hiện phân loại bằng chứng hiện trường vụ án cho Bộ Nội vụ Vương quốc Anh.

Mặc dù ý tưởng về các chương trình tự tiến hóa, ban đầu được viết bằng ngôn ngữ máy tính Lisp, đã nảy ra giữa các sinh viên của John Holland, phải đến khi họ tổ chức hội nghị Giải thuật di truyền (GA) đầu tiên ở Pittsburgh, Nichael Cramer mới công bố các chương trình tiến hóa trong hai ngôn ngữ được thiết kế đặc biệt, bao gồm phát biểu đầu tiên của lập trình di truyền "dựa trên cây" hiện đại (nghĩa là các ngôn ngữ thủ tục được tổ chức theo cấu trúc cây và được vận hành bởi các toán tử GA được định nghĩa phù hợp). Năm 1988, John Koza (cũng là một nghiên cứu sinh của John Holland) đã được cấp bằng sáng chế cho phát minh GA cho sự tiến hóa chương trình. Tiếp theo là công bố trong Hội nghị chung quốc tế về trí tuệ nhân tạo IJCAI-89.

Koza tiếp nối điều này với 205 ấn phẩm về "Lập trình di truyền" (GP), tên được đặt ra bởi David Goldberg, cũng là một nghiên cứu sinh của John Holland. Tuy nhiên, chính loạt 4 cuốn sách của Koza, bắt đầu từ năm 1992 với các video đi kèm, mới thực sự thành lập GP. Sau đó, đã có sự tăng lên đáng kể về số lượng xuất bản với thư mục Lập trình di truyền, vượt quá ngưỡng 10,000 mục. Năm 2010, Koza liệt kê 77 kết quả trong đó lập trình di truyền có khả năng cạnh tranh với con người.

Năm 1996, Koza bắt đầu hội nghị Lập trình di truyền hàng năm, sau đó là hội nghị EuroGP hàng năm vào năm 1998, và cuốn sách đầu tiên trong loạt bài GP do Koza biên tập. Năm 1998 cũng chứng kiến sách giáo khoa GP đầu tiên. GP tiếp tục phát triển mạnh mẽ, dẫn đến việc xuất bản tạp chí GP chuyên khoa đầu tiên và ba năm sau (2003) Hội thảo thường niên về lý thuyết và thực hành lập trình di truyền (GPTP) được thành lập bởi Rick Riolo. Các bài báo về Lập trình di truyền tiếp tục được xuất bản tại nhiều hội nghị và tạp chí liên quan. Ngày nay có mười chín cuốn sách GP trong đó có một số cuốn dành cho học sinh.

Công trình nền tảng trong GP

Những công trình đầu tiên tạo tiền đề cho các chủ đề nghiên cứu lập trình di truyền và ứng dụng hiện nay rất đa dạng, bao gồm tổng hợp và sửa chữa phần mềm, mô hình dự đoán, khai thác dữ liệu, mô hình tài chính, cảm biến mềm, thiết kế, và xử lý hình ảnh. Các ứng dụng trong một số lĩnh vực, chẳng hạn như thiết kế, thường sử dụng các biểu diễn trung gian, chẳng hạn như mã hóa tế bào của Fred Gruau. Sự tiếp nhận công nghiệp đã trở nên đáng kể trong một số lĩnh vực bao gồm tài chính, công nghiệp hóa chất, tin sinh học và công nghiệp thép.

Phương pháp

Biểu diễn chương trình

khung|Một hàm được biểu diễn dưới dạng cấu trúc cây Theo truyền thống, các chương trình tiến hóa bằng GP được biểu diễn trong bộ nhớ dưới dạng cấu trúc cây. Cấu trúc cây có thể được định lượng dễ dàng một cách đệ quy. Mọi nút cây đều có một toán tử hàm và mọi nút đầu cuối đều có một toán hạng, làm cho việc tiến hóa và định lượng các biểu thức toán học trở nên dễ dàng. Vì vậy, theo truyền thống GP ủng hộ việc sử dụng các ngôn ngữ lập trình có cấu trúc cây một cách tự nhiên (ví dụ: Lisp, các ngôn ngữ lập trình hàm khác cũng phù hợp).

Các biểu diễn không phải cây đã được đề xuất và thực hiện thành công, chẳng hạn như lập trình di truyền tuyến tính phù hợp với các ngôn ngữ mệnh lệnh vốn truyền thống hơn [ví dụ, xem Banzhaf et al. (1998)]. Phần mềm GP thương mại Discipulus sử dụng mã máy nhị phân đệ quy tự động ("AIM") để đạt được hiệu suất tốt hơn. µGP sử dụng đa đồ thị có hướng để tạo ra các chương trình khai thác triệt để cú pháp của một hợp ngữ nhất định. Các biểu diễn chương trình khác mà các công trình nghiên cứu và phát triển quan trọng đã thực hiện bao gồm các chương trình cho máy ảo dựa trên ngăn xếp, và chuỗi các số nguyên được ánh xạ tới các ngôn ngữ lập trình tùy ý thông qua ngữ pháp. Lập trình di truyền Descartes là một dạng khác của GP sử dụng biểu diễn đồ thị thay vì biểu diễn dựa trên cây thông thường để mã hóa các chương trình máy tính.

Hầu hết các biểu diễn chứa phần mã vô hiệu về mặt cấu trúc (intron). Các gen không mã hóa như vậy có vẻ vô dụng vì chúng không ảnh hưởng đến hoạt động của bất kỳ cá thể nào. Tuy vậy, chúng thay đổi xác suất tạo ra các con khác nhau dưới các toán tử biến dị, và do đó làm thay đổi các thuộc tính biến dị của cá thể. Các thí nghiệm dường như cho thấy sự hội tụ nhanh hơn khi sử dụng các biểu diễn chương trình cho phép các gen không mã hóa so với các biểu diễn chương trình không có bất kỳ gen không mã hóa nào.

Chọn lọc

Chọn lọc là một quá trình theo đó những cá nhân nhất định được chọn từ thế hệ hiện tại sẽ đóng vai trò là cha mẹ cho thế hệ tiếp theo. Các cá nhân được chọn theo xác suất để những cá nhân có thành tích tốt hơn có cơ hội được chọn cao hơn. và các phương pháp khác đã được chứng minh là hoạt động tốt hơn đối với nhiều vấn đề về GP.

Chọn lọc tinh hoa, hay gieo mầm cho thế hệ tiếp theo với cá thể tốt nhất (hoặc n cá thể tốt nhất) từ thế hệ hiện tại, là một kỹ thuật đôi khi được sử dụng để tránh thoái triển.

Trao đổi chéo

Trong Lập trình di truyền, hai cá thể phù hợp được chọn từ quần thể để làm bố mẹ cho một hoặc hai con. Trong lập trình di truyền cây, những bậc cha mẹ này được biểu diễn dưới dạng cây treo ngược, với các nút gốc ở trên cùng. Trong trao đổi chéo cây con, ở mỗi cá thể cha mẹ, một cây con (subtree) được chọn ngẫu nhiên. (Được đánh dấu bằng màu vàng trong hoạt hình.) Bên trong cá thể cha mẹ hiến gốc (trong hoạt hình bên trái), cây con đã chọn sẽ bị xóa và được thay thế bằng một bản sao của cây con được chọn ngẫu nhiên từ cá thể cha mẹ còn lại, để tạo ra một cá thể con mới (child tree).

Đôi khi trao đổi chéo hai con được sử dụng, trong trường hợp đó, cây con đã bị xóa (trong hoạt hình bên trái) không chỉ bị xóa mà được sao chép vào bản sao của cá thể cha mẹ thứ hai (ở đây bên phải) thay thế (trong bản sao) cây con đã được chọn ngẫu nhiên trước đó. Do đó, kiểu trao đổi chéo cây con này lấy hai cá thể thích nghi và tạo ra hai cá thể con.

Lập trình di truyền giao nhau giữa cây con

Đột biến

Có nhiều dạng đột biến trong lập trình di truyền. Chúng đều xuất phát từ một cá thể cha mẹ thích nghi và đúng về mặt cú pháp và nhắm đến mục tiêu tạo ra một cá thể con ngẫu nhiên đúng về mặt cú pháp. Trong hoạt ảnh, một cây con được chọn ngẫu nhiên (được đánh dấu bằng màu vàng). Nó bị loại bỏ và thay thế bằng một cây con được tạo ngẫu nhiên.

Các phép đột biến khác chọn một lá (nút bên ngoài) của cây và thay thế nó bằng một lá được chọn ngẫu nhiên. Một phép đột biến khác nữa là chọn ngẫu nhiên một hàm (nút bên trong) và thay thế nó bằng một hàm khác có cùng arity (số đối số). Phép đột biến dịch lên chọn ngẫu nhiên một cây con và thay thế nó bằng một cây con bên trong chính nó. Do đó đột biến dịch lên bảo đảm con có kích thước nhỏ hơn. Phép thay thế lá và thay thế hàm cùng số đối số đảm bảo con có cùng kích thước với cha mẹ. Trong khi đó, đột biến cây con (trong hoạt hình) có thể, tùy thuộc vào tập hợp các hàm và đầu cuối, có xu hướng làm tăng hoặc giảm kích thước cây. Các đột biến dựa trên cây con khác cố gắng kiểm soát cẩn thận kích thước của cây con thay thế và do đó kích thước của cá thể con nhỏ|Hoạt hình của quá trình tạo ra cá thể con lập trình di truyền bằng cách đột biến cha mẹ qua sự loại bỏ cây con và thay thế bằng mã ngẫu nhiên Tương tự, có nhiều dạng đột biến lập trình di truyền tuyến tính, mỗi dạng đều cố gắng đảm bảo cá thể con bị đột biến vẫn đúng về mặt cú pháp.

Các ứng dụng

GP đã được sử dụng thành công như một công cụ lập trình tự động, một công cụ học máy và một công cụ giải quyết vấn đề tự động. Kể từ năm 2004, Hội nghị Tính toán di truyền và tiến hóa (GECCO) hàng năm tổ chức cuộc thi Giải thưởng cạnh tranh với con người (còn gọi là Humies), nơi các giải thưởng tiền mặt được trao cho các kết quả cạnh tranh được với con người bằng bất kỳ hình thức tính toán di truyền và tiến hóa nào. GP đã giành được nhiều giải thưởng ở cuộc thi này trong những năm qua.

Lập trình siêu di truyền

Lập trình siêu di truyền (Meta-genetic programing, Meta-GP) là kỹ thuật siêu học được đề xuất để phát triển một hệ thống lập trình di truyền bằng cách sử dụng chính lập trình di truyền. Nó đề xuất rằng nhiễm sắc thể, quá trình trao đổi chéo và đột biến đều là kết quả của sự tiến hóa, do đó, chúng nên được phép tự thay đổi như những phiên bản ngoài đời thực thay vì được xác định bởi một lập trình viên. Meta-GP được Jürgen Schmidhuber chính thức đề xuất vào năm 1987. Kĩ thuật này có thể tương đồng với công trình Eurisko trước đó của Doug Lenat. Nó là một thuật toán đệ quy tự dừng, cho phép tránh rơi vào đệ quy vô hạn. Trong phương pháp tiếp cận "tiến hóa tự xây dựng" đối với lập trình siêu di truyền, các phương pháp sinh sản và biến dị con cái được mã hóa trong chính các chương trình đang tiến hóa, và các chương trình được thực hiện để tạo ra các chương trình mới được thêm vào quần thể.

Những người chỉ trích ý tưởng này thường nói rằng cách tiếp cận này có phạm vi quá rộng. Tuy nhiên, có thể giới hạn tiêu chí thích nghi thành một tiêu chí chung để thu được một GP tốt hơn để tiến hóa cho các lớp con. Chẳng hạn như meta-GP tiến hóa để tạo ra các thuật toán đi bộ của con người, sau đó được sử dụng để tiến hóa hoạt động chạy, nhảy của con người, v.v. Tiêu chí thích nghi áp dụng cho meta GP này sẽ chỉ đơn giản là một giá trị hiệu suất.

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong trí tuệ nhân tạo, **lập trình di truyền** (_genetic programming, GP_) là một kỹ thuật tiến hóa các chương trình mà ban đầu chưa thích nghi (thường là chương trình ngẫu nhiên) cho đến
nhỏ|Hình 1: W. Sutton (trái) và T. Boveri (phải) cùng sáng lập thuyết di truyền nhiễm sắc thể. **Học thuyết di truyền nhiễm sắc thể** là lí thuyết Sinh học cho rằng nhiễm sắc thể
nhỏ|Một dãy các codon nằm trong một phần của phân tử [[RNA thông tin (mRNA). Mỗi codon chứa ba nucleotide, thường tương ứng với một amino acid duy nhất. Các nucleotide được viết tắt bằng
**Phiêu bạt di truyền**, còn gọi là **trôi dạt alen** hoặc **hiệu ứng Sewall Wright**, là sự thay đổi tần số của một biến thể gen hiện tại (alen) trong quần thể do lấy mẫu
**Java** (phiên âm Tiếng Việt: "_Gia-va_") là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp được thiết kế để có càng ít phụ thuộc thực thi càng tốt. Nó là ngôn ngữ
nhỏ|Gregor Mendel - người sáng lập "di truyền học Mendel" **Di truyền Mendel** là nền tảng của di truyền học, gồm các tư tưởng của Grêgo Menđen chỉ ra xu hướng sự kế thừa sinh
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
nhỏ|243x243px|[[Ruồi giấm thường (_D. melanogaster_) là động vật mô hình, đối tượng được Thomas Hunt Morgan nghiên cứu để tìm ra quy luật di truyền liên kết gen. Cho tới năm 2017, đã có tới
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
Trong di truyền học quần thể, **cố định gen** là hiện tượng trong đó một alen của một gen lấn át tất cả alen khác và đạt tần số 100%. Nói cách khác, đó là
Trong ngành khoa học máy tính, **lập trình hàm** (**lập trình chức năng**) là một mô hình lập trình xem việc tính toán là sự đánh giá các hàm toán học và tránh sử dụng
nhỏ|Bố và con trai có đôi tai rất giống nhau. **Di truyền** là hiện tượng truyền đạt các tính trạng của (bố mẹ, tổ tiên) cho các thế hệ (con, cháu). Chẳng hạn người bố
nhỏ|Mô hình cấu trúc lý thuyết của bộ ba mã di truyền, theo đó mỗi [[nucleotide (A, T, G hay C) ở không gian 3D có thể kết hợp có lặp với mỗi nuclêôtit khác,
**Ruby** là một ngôn ngữ lập trình hướng đối tượng, có khả năng phản ứng. Theo tác giả, Ruby chịu ảnh hưởng bởi Perl, Smalltalk, Eiffel, Ada và Lisp. Ruby cung cấp nhiều mẫu hình
**Python** () là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể. Python có kiểu động
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
**Biến dị di truyền** là sự khác nhau về ADN giữa các cá thể hoặc quần thể. Đột biến là nguyên nhân sâu xa nhất của biến dị di truyền, nhưng các cơ chế khác,
nhỏ|Hình 1: Các kiểu tái tổ hợp gen. **Tái tổ hợp gen** là hiện tượng sinh vật bố mẹ sinh ra con có những tính trạng khác với bố mẹ do sự tổ hợp lại
Trong lập trình hướng đối tượng dựa trên lớp, **hàm tạo** (tiếng Anh: _constructor_, viết tắt: _ctor_) trong một lớp là một kiểu chương trình con đặc biệt được dùng để tạo ra đối tượng.
nhỏ|Một mô hình tế bào học phổ biến thường gặp trong di truyền học cổ điển, với các hình que tượng trưng cho nhiễm sắc thể mang gen. **Di truyền học cổ điển** là giai
thumb|upright=1.5 upright=1.4|thumb|A graphical representation of the typical human [[karyotype.]] **Đa dạng di truyền** là tổng số các đặc điểm di truyền trong thành phần di truyền của một loài, nó dao động rộng rãi từ
**Giải Gruber về Di truyền học** là một trong năm giải thưởng quốc tế lập bởi Quỹ Peter và Patricia Gruber, làm một tổ chức phi lợi nhuận của Hoa Kỳ đặt trụ sở ở
**C#** (**C Sharp**, đọc là _"xi-sáp"_) là một ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ được phát triển bởi Microsoft, C# là phần khởi đầu cho kế hoạch .NET của họ.
**Giải thuật di truyền** là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp (_combinatorial optimization_). Giải thuật di truyền là
**Ada** là ngôn ngữ lập trình xuất xứ từ Bộ quốc phòng Mỹ vào khoảng nửa đầu thập niên 80 của thế kỷ 20. Ngôn ngữ này được đặt tên theo Ada Augusta nữ bá
nhỏ|Ảnh chụp màn hình tài liệu [[API web viết bởi NASA]] Một **giao diện lập trình ứng dụng** (, viết tắt: _API_) là một giao diện mà một hệ thống máy tính hay ứng dụng
**Di truyền học sinh thái** nghiên cứu di truyền học trong các quần thể tự nhiên. Bộ môn này thì tương phản với di truyền học cổ điển, thứ làm việc hầu hết với các
**_Lập trình cho trái tim_** là một bộ phim truyền hình được thực hiện bởi FPT Media do Phi Tiến Sơn, NSƯT Phạm Nhuệ Giang và Nguyễn Mạnh Hà làm đạo diễn. Phim phát sóng
**Trung tâm Kỹ thuật Di truyền và Công nghệ Sinh học Cuba** (, **CIGB**) là một viện nghiên cứu tọa lạc tại Havana, Cuba. ## Thành lập Năm 1982, Tổ chức Phát triển Công nghiệp
nhỏ|Đặc điểm chiều dài của cùng [[alen VNTR của sáu người.]] **Lập hồ sơ DNA** là xác định các đặc điểm DNA của một cá nhân. Đây là thuật ngữ dịch từ tiếng Anh **DNA
**Quảng cáo lập trình** () là một quy trình tự động trong việc mua và bán các vị trí quảng cáo theo thời gian thực trên nền tảng kỹ thuật số và là một phần
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
nhỏ|Hình 1: Ví dụ về đoạn lặp lại trong chuỗi LTR của một chủng virut HIV. **Chuỗi lặp đoạn cuối dài** là đoạn DNA gồm các trình tự nuclêôtit giống hệt nhau được lặp lại
**Trình Di** (Tiếng Trung giản thể: 程颐; Tiếng Trung: 程頤, bính âm: Chéng Yí), tên tự là Chính Thúc hay còn được gọi là Y Xuyên Tiên Sinh, là một nhà Triết học Trung Hoa
Ngày nay, với các phần mềm hỗ trợ như ScratchJR Online, trẻ em ở độ tuổi mẫu giáo cũng có thể dễ dàng tiếp cận với lập trình và khoa học máy tính. Hướng dẫn
**_Di truyền học và nguồn gốc các Loài_** là cuốn sách được xuất bản năm 1937 bởi Theodosius Dobzhansky, một nhà sinh học tiến hóa người Mỹ gốc Ukaraina. Nó được coi là một trong
nhỏ| Chương trình máy tính "Xin chào, thế giới" của [[Brian Kernighan (1978) ]] **Chương trình máy tính** là tập hợp các câu lệnh thực hiện một tác vụ cụ thể khi được máy tính
Phát triển não trái, tư duy logic, phân tích tối ưu. Rèn luyện tư duy lập trình sáng tạo. Bước đầu làm quen Nghề lập trình, công nghệ 4.0. Hiểu biết nguyên tắc lập trình,
ScratchJr là ngôn ngữ lập trình trực quan được thiết kế để giới thiệu các kỹ năng mã hóa cho trẻ em ở độ tuổi từ 5 tới 7 tuổi. Bằng cách tạo các dự
Trong di truyền học, **trình tự tắt** hay **silencer** là một trình tự DNA có khả năng gắn với các yếu tố điều chỉnh phiên mã, được gọi là chất ức chế. DNA chứa gen
nhỏ|Đường cong phân bố các kiểu gen trong trường hợp hai alen cùng [[lô-cut gen|locus gen với tần số p (của A) và q (của a) theo phương trình = (p + q)2.]] **Phương trình
liên_kết=https://en.wikipedia.org/wiki/File:Diagram_human_cell_nucleus.svg|nhỏ|350x350px|Nhân của một tế bào người cho thấy vị trí của vùng dị nhiễm sắc **Vùng dị nhiễm sắc** là một dạng DNA được đóng gói rất chặt, gồm có nhiều loại. Những loại này
thumb|Bản đồ các dòng di cư sớm thời tiền sử theo [[DNA ty thể. Các con số thể hiện là Ka BP.]] **Các dòng di cư sớm thời tiền sử** bắt đầu khi Người đứng
nhỏ|326x326px|Trụ sở của [[Đài Truyền hình Thành phố Hồ Chí Minh.]] **Truyền hình ở Việt Nam** bắt đầu xuất hiện từ giữa những năm 1960 tại Sài Gòn (thuộc Việt Nam Cộng hòa trước đây),
**Đài Truyền hình Thành phố Hồ Chí Minh** là đơn vị sự nghiệp báo chí trực thuộc Ủy ban nhân dân Thành phố Hồ Chí Minh. Đây là đài truyền hình đầu tiên ở Việt
nhỏ|phải|Một [[trạm phát sóng truyền hình tại Hồng Kông]] **Truyền hình**, hay còn được gọi là **tivi** (_TV_) hay **vô tuyến truyền hình** (truyền hình không dây), **máy thu hình**, **máy phát hình**, hay **vô
**Công nghệ thông tin và truyền thông** (tiếng Anh: _Information and communications technology_, ICT) là cụm từ thường dùng như từ đồng nghĩa rộng hơn cho công nghệ thông tin (IT), nhưng thường là một
**Đài Truyền hình Việt Nam**, được biết đến rộng rãi với tên gọi **VTV** (viết tắt của từ ), là đài truyền hình quốc gia thuộc sở hữu của Chính phủ nước Cộng hòa Xã
**Truyện tranh** hay **mạn họa** là một phương tiện được sử dụng để diễn đạt ý tưởng bằng hình ảnh, thường kết hợp với văn bản hoặc thông tin hình ảnh khác. Thông thường, nó
Trước đền [[Đinh Bộ Lĩnh trên quê hương Gia Viễn]] Các di tích thờ Vua Đinh ở Ninh Bình (màu đỏ) [[Đền Vua Đinh Tiên Hoàng ở cố đô Hoa Lư]] Ninh Bình là quê