✨Quy hoạch động

Quy hoạch động

Trong ngành khoa học máy tính, quy hoạch động (tiếng Anh: dynamic programming) là một phương pháp giảm thời gian chạy của các thuật toán thể hiện các tính chất của các bài toán con gối nhau (overlapping subproblem) và cấu trúc con tối ưu (optimal substructure).

Nhà toán học Richard Bellman đã phát minh phương pháp quy hoạch động vào năm 1953. Ngành này đã được thành lập như là một chủ đề về kỹ nghệ và phân tích hệ thống đã được tổ chức IEEE thừa nhận.

Tổng quan

nhỏ|Hình 1. Tìm đường đi ngắn nhất sử dụng cấu trúc con tối ưu; một đường lượn sóng đại diện cho một đường đi ngắn nhất giữa hai đỉnh mà nó nối

Cấu trúc con tối ưu có nghĩa là các lời giải tối ưu cho các bài toán con có thể được sử dụng để tìm các lời giải tối ưu cho bài toán toàn cục. Ví dụ, đường đi ngắn nhất tới một đỉnh trong một đồ thị có thể được tìm thấy bằng cách: trước hết tính đường đi ngắn nhất tới đích từ tất cả các đỉnh kề nó, rồi dùng kết quả này để chọn đường đi toàn cục tốt nhất, như trong hình 1. Nói chung, ta có thể giải một bài toán với cấu trúc con tối ưu bằng một quy trình ba bước:

Chia bài toán thành các bài toán con nhỏ hơn.

Giải các bài toán này một cách tối ưu bằng cách sử dụng đệ quy quy trình ba bước này.

Sử dụng các kết quả tối ưu đó để xây dựng một lời giải tối ưu cho bài toán ban đầu.

Các bài toán con được giải bằng cách chia chúng thành các bài toán nhỏ hơn, và cứ tiếp tục như thế, cho đến khi ta đến được trường hợp đơn giản dễ tìm lời giải.

Hình 2. Đồ thị bài toán con cho dãy Fibonacci. Đây không phải là một [[cấu trúc cây mà là một đồ thị có hướng phi chu trình mô tả quan hệ giữa các bài toán con gối nhau.]] Nói rằng một bài toán có các bài toán con trùng nhau có nghĩa là mỗi bài toán con đó được sử dụng để giải nhiều bài toán lớn hơn khác nhau. Ví dụ, trong dãy Fibonacci, F3 = F1 + F2 và F4 = F2 + F3 — khi tính mỗi số đều phải tính F2. Vì tính F5 cần đến cả F3 và F4, một cách tính F5 một cách ngây thơ có thể sẽ phải tính F2 hai lần hoặc nhiều hơn. Điều này áp dụng mỗi khi có mặt các bài toán con gối nhau: một cách tiếp cận ngây thơ có thể tốn thời gian tính toán lại lời giải tối ưu cho các bài toán con mà nó đã giải.

Để tránh việc đó, ta lưu trữ lời giải của các bài toán con đã giải. Do vậy, nếu sau này ta cần giải lại chính bài toán đó, ta có thể lấy và sử dụng kết quả đã được tính toán. Hướng tiếp cận này được gọi là lưu trữ (trong tiếng Anh được gọi là memoization, không phải memorization, dù từ này cũng hợp nghĩa). Nếu ta chắc chắn rằng một lời giải nào đó không còn cần thiết nữa, ta có thể xóa nó đi để tiết kiệm không gian bộ nhớ. Trong một số trường hợp, ta còn có thể tính lời giải cho các bài toán con mà ta biết trước rằng sẽ cần đến.

Tóm lại, quy hoạch động sử dụng:

  • Các bài toán con gối nhau
  • Cấu trúc con tối ưu
  • Memoization

Quy hoạch động thường dùng một trong hai cách tiếp cận:

  • top-down (Từ trên xuống): Bài toán được chia thành các bài toán con, các bài toán con này được giải và lời giải được ghi nhớ để phòng trường hợp cần dùng lại chúng. Đây là đệ quy và lưu trữ được kết hợp với nhau.
  • bottom-up (Từ dưới lên): Tất cả các bài toán con có thể cần đến đều được giải trước, sau đó được dùng để xây dựng lời giải cho các bài toán lớn hơn. Cách tiếp cận này hơi tốt hơn về không gian bộ nhớ dùng cho ngăn xếp và số lời gọi hàm. Tuy nhiên, đôi khi việc xác định tất cả các bài toán con cần thiết cho việc giải quyết bài toán cho trước không được trực giác lắm.

Một số ngôn ngữ lập trình hàm, nổi tiếng nhất là Haskell, có thể tự động lưu trữ kết quả của một lời gọi hàm với một tập đối số (argument) cụ thể, để tăng tốc cách đánh giá call-by-name (cơ chế này được gọi là call-by-need). Việc này chỉ có thể đối với các hàm không có hiệu ứng phụ, tính chất này luôn luôn đúng trong ngôn ngữ Haskell nhưng ít khi đúng trong các ngôn ngữ lập trình mệnh lệnh, chẳng hạn Pascal, C, C++, Java...

Ví dụ

Dãy Fibonacci

Một cài đặt đơn giản của một hàm tính phần tử thứ n của dãy Fibonacci, trực tiếp dựa theo định nghĩa toán học. Cài đặt này thực hiện rất nhiều tính toán thừa.:

function fib(n) if n = 0 or n = 1 return 1 else return fib(n − 1) + fib(n − 2)

Lưu ý rằng nếu ta gọi, chẳng hạn, fib(5), ta sẽ tạo ra một cây các lời gọi hàm, trong đó các hàm của cùng một giá trị được gọi nhiều lần:

fib(5)

fib(4) + fib(3)

(fib(3) + fib(2)) + (fib(2) + fib(1))

((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))

(((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))

Cụ thể, fib(2) được tính hai lần. Trong các ví dụ lớn hơn, sẽ có nhiều giá trị của fib, hay các bài toán con được tính lại, dẫn đến một thuật toán có thời gian lũy thừa.

Bây giờ, giả sử ta có một đối tượng ánh xạ đơn giản, nó ánh xạ mỗi giá trị của fib đã được tính tới kết quả của giá trị đó. Ta sửa đổi hàm trên như sau để sử dụng và cập nhật ánh xạ trên. Hàm thu được chỉ đòi hỏi thời gian chạy O(n) thay vì thời gian chạy luỹ thừa:

var m:= map(0 → 1, 1 → 1) function fib(n) if n not in keys(m) m[n]:= fib(n − 1) + fib(n − 2) return m[n]

Đây là cách tiếp cận từ trên xuống, do trước hết ta chia bài toán thành các bài toán nhỏ hơn, rồi giải chúng và lưu trữ các kết quả. Trong trường hợp này, ta cũng có thể giảm từ chỗ hàm sử dụng không gian tuyến tính (O(n)) xuống chỉ còn sử dụng không gian hằng bằng cách sử dụng cách tiếp cận từ dưới lên. Cách này tính các giá trị nhỏ hơn của fib trước, rồi từ đó xây dựng các giá trị lớn hơn:

function fib(n) var previousFib:= 1, currentFib:= 1 repeat n − 1 times var newFib:= previousFib + currentFib previousFib:= currentFib currentFib:= newFib return currentFib

Phiên bản bottom-up này gần với vòng lặp mệnh lệnh đơn giản dùng cho việc tính hàm Fibonacci có trong môn học nhập môn khoa học máy tính.

Trong cả hai ví dụ trên, ta chỉ tính fib(2) một lần, rồi sử dụng nó để tính cả fib(4)fib(3), thay vì tính nó mỗi lần cần tính fib(4) hay fib(3).

Bàn cờ

Xét một bàn cờ hình vuông n × n và một hàm giá trị c(i, j) trả về giá trị của ô i,j (i là chỉ số hàng, j là chỉ số cột). Ví dụ: bàn cờ 5 × 5:

+---+---+---+---+---+ 5 | 6 | 7 | 4 | 7 | 8 | +---|---|---|---|---+ 4 | 7 | 6 | 1 | 1 | 4 | +---|---|---|---|---+ 3 | 3 | 5 | 7 | 8 | 2 | +---|---|---|---|---+ 2 | 2 | 6 | 7 | 0 | 2 | +---|---|---|---|---+ 1 | 7 | 3 | 5 | 6 | 1 | +---+---+---+---+---+ 1 2 3 4 5

Trong ví dụ, ta có chẳng hạn c(1, 3) = 5

Giả sử ta có một quân cờ có thể xuất phát tại một ô bất kỳ tại hàng đầu tiên (hàng 1), và ta cần tìm đường đi ngắn nhất (tổng giá trị của các ô đi qua là nhỏ nhất) để tới được hàng cuối cùng (hàng n), với điều kiện quân cờ chỉ có thể tiến thẳng hoặc tiến theo đường chéo sang trái hoặc sang phải. Nghĩa là, một quân cờ tại ô (1,3) có thể nhảy sang được một trong ba ô (2,2), (2,3) và (2,4). +---+---+---+---+---+ 5 | | | | | | +---|---|---|---|---+ 4 | | | | | | +---|---|---|---|---+ 3 | | | | | | +---|---|---|---|---+ 2 | | x | x | x | | +---|---|---|---|---+ 1 | | | O | | | +---+---+---+---+---+ 1 2 3 4 5

Bài toán này thể hiện tính chất cấu trúc con tối ưu. Nghĩa là, lời giải cho bài toán lớn phụ thuộc vào lời giải cho các bài toán con. Ta định nghĩa hàm q(i, j) như sau:

:q(i, j) = chi phí tối thiểu để đến được ô (i, j)

Nếu ta có thể tìm được giá trị của hàm này tại tất cả các ô nằm trên hàng n, ta sẽ chọn lấy giá trị nhỏ nhất và lần ngược con đường đó để có được đường đi ngắn nhất.

Dễ thấy rằng q(i, j) bằng chi phí tối thiểu để đến ô bất kỳ trong ba ô nằm dưới nó (do chỉ có thể đến được (i,j) từ các ô này) cộng thêm c(i, j). Ví dụ:

+---+---+---+---+---+ 5 | | | | | | +---|---|---|---|---+ 4 | | | A | | | +---|---|---|---|---+ 3 | | B | C | D | | +---|---|---|---|---+ 2 | | | | | | +---|---|---|---|---+ 1 | | | | | | +---+---+---+---+---+ 1 2 3 4 5

:q(A) = \min(q(B),\;q(C),\;q(D))\;+\;c(A)

Bây giờ, ta định nghĩa q(i, j) một cách chính thức hơn:

:q(i,j)=\left{\begin{matrix} \infty & j = 0 \mbox{ or }j = n+1 \ c(i, j) & i = 1 \ \min(q(i-1, j-1), q(i-1, j), q(i-1, j+1)) + c(i,j) & \mbox{otherwise}\end{matrix}\right.

Phương trình trên rất dễ hiểu. Dòng đầu tiên là các trường hợp đặc biệt, dòng này có mục đích dọn dẹp cho tính chất đệ quy. Dòng thứ hai mô tả những gì xảy ra tại hàng đầu tiên, để ta có xuất phát điểm. Dòng thứ ba, phần đệ quy, là phần quan trọng nhất. Về cơ bản, nó giống với ví dụ A,B,C,D.

Từ định nghĩa này, ta có thể dễ dàng tạo một đoạn mã đệ quy để tính q(i, j). Trong đoạn mã giả sau, n là kích thước của bàn cờ, c(i, j) là hàm chi phí, và min() trả về giá trị nhỏ nhất của các giá trị nằm trong ngoặc:

function minCost(i, j) if j = 0 or j = n + 1 return infinity else if i = 1 return c(i, j) else
return min(minCost(i-1, j-1), minCost(i-1, j), minCost(i-1, j+1)) + c(i, j)

Cần lưu ý rằng hàm này chỉ tính chi phí của đường đi chứ không phải đường đi đích thực. Ta sẽ nói đến phần đó sau.

Cũng như ví dụ về dãy Fibonacci, hàm trên chạy rất rất lâu do nó phải tốn hàng núi thời gian để tính đi tính lại các đường đi ngắn nhất. Tuy nhiên, ta có thể tính nhanh hơn rất nhiều nếu hàm trên thực hiện công việc lưu trữ các giá trị đã được tính (trong một mảng). Hoặc, ta còn có thể nhanh hơn nữa nếu tính toán theo kiểu từ dưới lên và một mảng hai chiều q[i, j]. Tại sao? Đơn giản là vì khi đó ta tính toán mỗi đường đi chỉ một lần, và ta có thể chọn cái gì cần tính toán trước.

Ta còn cần biết đường đi thực sự như thế nào. Vấn đề đó có thể được giải quyết bằng cách sử dụng một mảng nữa: "mảng nút đứng trước" p[i, j]. Mảng này lưu các dấu vết về chuyện các đường đi từ hướng nào tới. Xét đoạn mã sau:

function computeShortestPathArrays() for x from 1 to n q[1, x]:= c(1, x)

for y from 1 to n q[y, 0]:= infinity q[y, n + 1]:= infinity

for y from 2 to n for x from 1 to n m:= min(q[y-1, x-1], q[y-1, x], q[y-1, x+1]) q[y, x]:= m + c(y, x) c[y, x]:= q[y, x]

if m = q[y-1, x-1] p[y, x]:= -1 else if m = q[y-1, x] p[y, x]:= 0 else p[y, x]:= 1

Bây giờ, vấn đề đơn giản còn lại là xác định cực tiểu và in nó ra.

function computeShortestPath() computeShortestPathArrays()

minIndex:= 1 min:= q[n, 1]

for i from 2 to n if q[n, i] < min minIndex:= i min:= q[n, i]

printPath(n, minIndex)

function printPath(y, x) print(x) print("<-")

if y = 2 print(x + p[y, x]) else printPath(y-1, x + p[y, x])

Các thuật toán sử dụng quy hoạch động

  • Nhiều thuật toán xử lý xâu ký tự, trong đó có bài toán dãy con chung lớn nhất.
  • Thuật toán CYK xác định xem một xâu cho trước có thể được sinh từ một văn phạm phi ngữ cảnh (context-free grammar) như thế nào.
  • The use of transposition tables and refutation tables in computer chess
  • Thuật toán Viterbi
  • Thuật toán Earley
  • Thuật toán Needleman-Wunsch và các thuật toán sắp chuỗi (sequence alignment) khác dùng trong Tin sinh học
  • Levenshtein distance (edit distance)
  • Thuật toán Bellman-Ford
  • Thuật toán Floyd: tìm đường đi ngắn nhất giữa mọi cặp đỉnh
  • Tối ưu hóa thứ tự của phép nhân ma trận theo chuỗi (chain matrix multiplication)
  • Thuật toán tổng tập con (subset sum)
  • Bài toán xếp ba lô (knapsack problem)
👁️ 2 | 🔗 | 💖 | ✨ | 🌍 | ⌚
Trong ngành khoa học máy tính, **quy hoạch động** (tiếng Anh: _dynamic programming_) là một phương pháp giảm thời gian chạy của các thuật toán thể hiện các tính chất của các bài toán con
Quy hoạch vùng ven đô có mật độ dân cư thấp ở [[Cincinnati, Hoa Kỳ.]] **Quy hoạch đô thị** là một khái niệm hay được dùng để chỉ các hoạt động kiểm soát hay tổ
**Quy hoạch môi trường** là quá trình tạo cơ sở cho việc ra quyết định để thực hiện phát triển đất đai cùng với việc xem xét các yếu tố quản trị về môi trường,
thumb|right|Mặt bằng quy hoạch chi tiết khu vực định cư tại khu tự trị Aerodrom thuộc thành phố [[Skopje, Cộng hòa Macedonia.]] **Quy hoạch vùng** nhằm chỉ các phương thức được dùng bởi khu vực
**Quy hoạch Thành phố Hồ Chí Minh** là việc quy hoạch đô thị của thành phố này. Năm 1860, người Pháp quy hoạch đô thị này với dân số là 500.000 dân. Sau đó, dưới
Phó Thủ tướng Chính Phú Trần Lưu Quang chúc mừng: Những kết quả mà tỉnh Lkiên Giang đã đạt được trong thời gian qua; Các nhà đầu tư đã chọn Kiên Giang để đầu tư
**Trung tâm Triển lãm Quy hoạch Đô thị Thượng Hải** () là công trình tọa lạc ở Quảng trường Nhân dân, Thượng Hải, bên cạnh tòa nhà chính quyền thành phố. Trung tâm hoàn thành
Cty TNHH Tư vấn Quy Hoạch Kiến Trúc Nam Đảo hiện là công ty tư vấn quy hoạch xây dựng, thiết kế kiến ​​trúc, nội thất và tư vấn dự án chuyên nghiệp tại Nam
Cty TNHH Tư vấn Quy Hoạch Kiến Trúc Nam Đảo hiện là công ty tư vấn quy hoạch xây dựng, thiết kế kiến ​​trúc, nội thất và tư vấn dự án chuyên nghiệp tại Nam
Công Ty Cổ Phần Quy Hoạch Kiến Trúc Kim Chỉ Nam hoạt động kiến trúc và tư vấn kỹ thuật có liên quan.
**Hội Quy hoạch Phát triển đô thị Việt Nam** (tên tiếng Anh: **Vietnam Urban Planning and Development Association**), tên viết tắt là **VUPDA** là một tổ chức xã hội – nghề nghiệp được thành lập
UBND tỉnh Khánh Hòa vừa ban hành quyết định phê duyệt Quy hoạch sử dụng đất đến năm 2030 và kế hoạch sử dụng đất năm đầu của quy hoạch sử dụng đất TP. Nha
**Quy hoạch phát triển và quản lý báo chí toàn quốc đến 2025** là một đề án lớn thực hiện kéo dài qua nhiều năm nhằm hướng tới ,chào mừng kỷ niệm 100 năm Ngày
**Quy hoạch phát triển nông thôn** là quy hoạch tổng thể, nó bao gồm tổng hợp những nội dung hoạt động trong các lĩnh vực kinh tế - xã hội, môi trường, văn hóa liên
**Quy trình quyết định Markov** **(MDP)** cung cấp một nền tảng toán học cho việc mô hình hóa việc ra quyết định trong các tình huống mà kết quả là một phần ngẫu nhiên và
Khu du lịch sinh thái đảo Phú Quốc được phê duyệt quy hoạch từ năm 2006 với diện tích 205 ha, đến 2020 giảm quy mô xuống 164 ha. Dự án này có tên thương
**Khu vực chống quy hoạch** hay còn gọi là ZAD (tiếng Pháp: Zone à défendre) là một thuật ngữ mới bắt nguồn từ tiếng Pháp chỉ một sự chiếm đóng trái phép của một nhóm
Bản đồ quy hoạch Phú Quốc, Kiên Giang là một tài liệu quan trọng trong quá trình quản lý và phát triển đô thị của khu vực. Bản đồ này thường được thực hiện bởi
Ông Đỗ Anh Dũng, Chủ tịch Tập đoàn Tân Hoàng Minh cho rằng, khu vực biển Hàm Ninh, Phú Quốc hiện nay biển thấp, nước đục, cần có quy hoạch lấn biển để có thể
Công ty TNHH Tư vấn Quy Hoạch Kiến Trúc Nam Đảo hiện là công ty tư vấn quy hoạch xây dựng, thiết kế kiến ​​trúc, nội thất và tư vấn dự án chuyên nghiệp tại
**Quy hoạch bộ nhớ trong Windows** là hình thức để người sử dụng và hệ điều hành Windows quy hoạch để quản lý sử dụng đồng thời nhiều loại bộ nhớ. ## Sử dụng bộ
Ví dụ về một bài toán xếp ba lô giới hạn 1 chiều: chọn các hộp nào để tổng giá trị các hộp trong ba lô là lớn nhất mà tổng khối lượng dưới 15 kg?
**Trung tâm Quy hoạch và Điều tra tài nguyên nước quốc gia** (tiếng Anh: _National Center for Water Resources Planning and Investigation_, viết tắt là **NAWAPI**) là tổ chức sự nghiệp công lập trực thuộc
**Đông Jurong** (tiếng Anh: Jurong East, , ) là khu quy hoạch và đô thị HDB nằm ở Vùng Tây, Singapore. Đông Jurong tiếp giáp với Tây Jurong và Văn Lễ (Boon Lay) về phía
**Vùng Đông** là một trong năm vùng của quốc gia-thành phố Singapore. Mặc dù có diện tích nhỏ nhất, vùng này lại có mật độ dân số cao thứ nhì trong năm vùng. Bedok là
Tỉnh Khánh Hòa hiện có 4 quy hoạch quan trọng được phê duyệt, gồm quy hoạch tỉnh đến năm 2030, tầm nhìn đến năm 2050; Khu kinh tế Vân Phong; đô thị Cam Lâm và
Sở Xây dựng tỉnh Đồng Nai là cơ quan chuyên môn thuộc Ủy ban Nhân dân tỉnh, có chức năng tham mưu và giúp UBND tỉnh quản lý nhà nước về các lĩnh vực: quy
**Vùng Đông-Bắc** là một trong năm vùng của thành quốc Singapore. Đây là vùng có mật độ dân số cao nhất và đứng thứ ba cả nước về dân số, trong đó Hậu Cảng là
nhỏ|So sánh hai bản sửa đổi của một tệp ví dụ, dựa trên dãy con chung dài nhất của chúng (màu đen) **Vấn đề chuỗi con chung dài nhất** **(tiếng anh:** **Longest common subsequence -
Đây là bài toán tìm một xâu (string) hoặc nhiều xâu là xâu con của hai hoặc nhiều xâu. Không nên nhầm lẫn giữa bài toán này với Bài toán chuỗi con chung dài nhất.
**Cấu trúc con tối ưu** (tiếng Anh: _Optimal substructure_) là một khái niệm quan trọng trong quy hoạch động. Nó đề cập đến tính chất của một bài toán trong đó một giải pháp tối
Công ty TNHH Tư vấn quy hoạch kiến trúc Nam Đảo (N A D architechtural planning co., ltd) hiện là công ty tư vấn quy hoạch xây dựng, thiết kế kiến ​​trúc, nội thất và
Ngày 06 tháng 02 năm 2024, Thủ tướng Chính phủ ban hành Quyết định số 150/QĐ-TTg về việc "Phê duyệt đồ án Quy hoạch chung thành phố Phú Quốc, tỉnh Kiên Giang đến năm 2040"
Ngày 06 tháng 02 năm 2024, Thủ tướng Chính phủ ban hành Quyết định số 150/QĐ-TTg về việc "Phê duyệt đồ án Quy hoạch chung thành phố Phú Quốc, tỉnh Kiên Giang đến năm 2040"
Ngày 06 tháng 02 năm 2024, Thủ tướng Chính phủ ban hành Quyết định số 150/QĐ-TTg về việc "Phê duyệt đồ án Quy hoạch chung thành phố Phú Quốc, tỉnh Kiên Giang đến năm 2040"
Ngày 06 tháng 02 năm 2024, Thủ tướng Chính phủ ban hành Quyết định số 150/QĐ-TTg về việc "Phê duyệt đồ án Quy hoạch chung thành phố Phú Quốc, tỉnh Kiên Giang đến năm 2040"
Ngày 06 tháng 02 năm 2024, Thủ tướng Chính phủ ban hành Quyết định số 150/QĐ-TTg về việc "Phê duyệt đồ án Quy hoạch chung thành phố Phú Quốc, tỉnh Kiên Giang đến năm 2040"
Trong khoa học máy tính, **thuật toán Floyd-Warshall** (còn được gọi là **thuật toán Floyd**, **thuật toán Roy-Warshall**, **thuật toán Roy-Floyd** hoặc **thuật toán WFI**) là một thuật toán để tìm đường đi ngắn nhất
Công Ty Cổ Phần Quy Hoạch Kiến Trúc Kim Chỉ Nam hoạt động kiến trúc và tư vấn kỹ thuật có liên quan. Địa chỉ: 68 đường Cách Mạng Tháng 8,Dương Đông, Đặc khu Phú
Trong các thuật toán của bộ môn khoa học máy tính, khái niệm **Khoảng cách Levenshtein** thể hiện khoảng cách khác biệt giữa 2 chuỗi ký tự. Khoảng cách Levenshtein giữa chuỗi S và chuỗi
Trong khoa học máy tính, **bài toán tìm mảng con lớn nhất** là bài toán tìm một mảng con liên tục của một mảng một chiều chứa cả số dương và số âm sao cho
**Lập kế hoạch bán hàng và hoạt động (S&OP)** là một quy trình quản lý kinh doanh tích hợp thông qua đó nhóm điều hành / lãnh đạo liên tục đạt được sự tập trung,
Sở Kế hoạch và Đầu tư là cơ quan chuyên môn thuộc Ủy ban nhân dân tỉnh thực hiện chức năng tham mưu, giúp Ủy ban nhân dân tỉnh quản lý nhà nước về quy
**Đường cao tốc Bắc – Nam phía Đông** (ký hiệu toàn tuyến là **CT.01**) là tên gọi thông dụng nhất của một tuyến đường cao tốc thuộc hệ thống đường cao tốc của Việt Nam
(Pháp lý). Chiều ngày 7/7, Thủ tướng Chính phủ Phạm Minh Chính đã tới dự và chỉ đạo Hội nghị công bố quy hoạch và xúc tiến đầu tư tỉnh Hưng Yên thời kỳ 2021-2030,
**Quỹ đầu tư** là một cách đầu tư tiền cùng với các nhà đầu tư khác để hưởng lợi từ những lợi thế vốn có khi làm việc như một phần của một nhóm. Những
nhỏ|409x409px| Lập kế hoạch tài nguyên sản xuất hoặc lập kế hoạch tài nguyên quản lý (hoặc MRP2) - Khoảng năm 1980, những thay đổi quá mức trong dự báo bán hàng, kéo theo sự
**Hội đồng nhân dân thành phố Đà Nẵng** là cơ quan quyền lực Nhà nước tại thành phố Đà Nẵng, được tổ chức và có chức năng theo quy định của _Luật tổ chức Hội
**Đánh giá môi trường** là đánh giá các hậu quả môi trường (tích cực lẫn tiêu cực) của một kế hoạch, chính sách, chương trình, hoặc các dự án thực tế trước khi quyết định
Sở Kế hoạch và Đầu tư là cơ quan chuyên môn thuộc Ủy ban nhân dân tỉnh An Giang thực hiện chức năng tham mưu, giúp Ủy ban nhân dân tỉnh quản lý nhà nước