~~~~~~~~~Anh 2 boys & girls: Come on in^^

xì căng đan thủ môn ECU nằm trên dưới vs mana ECU=))=))
Đá vs VL nữa ah:|
Để khi nào rủ lại sp đá:-?
 
Chỉnh sửa lần cuối:
ảnh thì Nga đang giữ:-?
Nhưng tình hình cuối giờ thấy Nga bị ....,k biết có sao k:-s,chả hiểu chuyện j:-s
 
Tớ thuộc loại manager kiêm quản lý điều hành nhân viên và lo surf web.
:-?:-?:-?
Bây h bạn mới biết IT như shit à.=))=))=))
Thế mà bọn tớ vẫn trụ được đấy.
Giỏi chưa.
:>:>:>:>

Tự sướng hả mày =)

anw, môn Tin rất hay :x nhất là khi thầy Huỳnh dạy :x môn thì hay nhưng GV như sh*t thì cũng thế :-l

vđ hay
Mình càng thêm tin tưởng vào lựa chọn của mình :>

----------

hôm nay thấy cảnh xì căng đan mót vs dứa trên bàn người trên người dưới nhé=))=))=))=))=))=))
ng` ta nhìn vào ECU sẽ thế nào đây =))=))=))=))=))=))=))=))=))

Cái này hay
Mai Nam mang vở đi học hỏi 2 bạn trẻ để nâng cao vốn hiểu biết nhé =)
 
Nhờ có thầy Tuấn dạy môn tin khối chiều mà giờ đây tên tuổi PTA sắp sửa nổi như cồn với danh hiệu "đấng cứu thế".(Người duy nhất giúp đỡ các bạn A2 làm bt tin)
=))=))=))=))=))=))=))=))
 
hay vđ thì bạn TA phải làm cho các bạn A2 thấy Tin hay thế nào chứ;))

Đang :D

Nhờ có thầy Tuấn dạy môn tin khối chiều mà giờ đây tên tuổi PTA sắp sửa nổi như cồn với danh hiệu "đấng cứu thế".(Người duy nhất giúp đỡ các bạn A2 làm bt tin)
=))=))=))=))=))=))=))=))

đến lúc các bạn ấy học sang QHD thì chuyển nhượng cho bạn Tùng =)
 
TA cứ yên tâm là các bạn ấy mà chuyển sang QHD thì chú phải thành God class cái đấy rồi.
=))=))=))
 
QHD?
còn j nữa vậy:-ss

QUD là quy hoạch động.

Trong ngành khoa học máy tính, quy hoạch động 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).

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:

1. Chia bài toán thành các bài toán con nhỏ hơn.
2. 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.
3. 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 and 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...
 
QUD là quy hoạch động.

Trong ngành khoa học máy tính, quy hoạch động 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).

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:

1. Chia bài toán thành các bài toán con nhỏ hơn.
2. 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.
3. 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 and 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...
:o:o:o:o:o:o:o:o:o:o:o:o:o:o
8-}8-}8-}8-}8-}8-}8-}8-}8-}8-}
^:)^^:)^^:)^^:)^^:)^^:)^^:)^
cái này mới nghe lần đầu=))=))=))
 
Chỉnh sửa lần cuối:
Tớ đã nói đến Qui hoạch động là một trong những cái cơ bản mà IT phải học chưa nhỉ.
:>:>:>:>:>:>
 
Back
Bên trên