Hello everybody, welcome back to datastructures and algorithms special dịch - Hello everybody, welcome back to datastructures and algorithms special Việt làm thế nào để nói

Hello everybody, welcome back to da

Hello everybody, welcome back to data
structures and algorithms specialization. Today, we're going to be talking about
what really goes into computing runtimes and really understanding how
long it takes a program to work. So in particular,
today we're really going to dive in. Up to this point we're
using this sort of rough number of lines of code executed count. And today we're going to talk
about how accurate this is and what sorts of complications come in. And in particular we'll see that if we
actually want something that's sort of fundamentally an accurate measure of
run time, it's going to be a huge mess. We're going to have to bring in all
sorts of extra data that aren't really convenient for us. And so, we're really sort of talking about the problem that comes in
with computing runtimes in algorithms. Something that we're not going to
resolve really until the next lecture. So to start with, let's look at
this algorithm that we had for computing Fibonacci numbers. Remember we created an array. We assigned the 0th element to 0. The first element to 1. Then, we have this big four loop where
we set the i element to the sum of the i minus first and
i minus second elements and then at the end of the day we
return the nth element to you. So we determined that when we ran this
program we executed about 2n + 2 lines of code. But we should really ask ourselves,
is this number of lines of code executed release with an accurate description
of the runtime of the algorithm? And, I mean, somehow, implicitly,
this measure of lines of code assumes that sort of any two lines of code
are sort of comparable to each other. They're sort of one basic operation. And so, let's actually look at
this program in some detail and see what goes into some of these lines of
code and see how valid this assumption is. So to start with, we create this array. And what happens when you
try to initialize an array? Well, this depends a lot on
your memory management system. Fundamentally, all you have to do is
sort of find some space in memory and then get to pointer to the first location. On the other hand, how exactly you find
this, maybe you need to shuffle some other things around to make room for it, maybe
after you allocate the array, you then want to zero out all of the entries so
that you don't have junk sitting in there. And so, it's not entirely clear. It depends a little bit on how exactly
your program is being interpreted. But it could be pretty fast. It could actually take a while,
depending on circumstances. Let's look at the next line. This is just a simple assignment,
we set the 0 entry to 0. However, if you really look at this, at the machine level, you're doing a bit
more work, you need to load up the pointer to the 0th element to the array, you maybe
then have to do some pointer arithmetic, you then need to store this literal
0 into that spot in memory. It could actually be not one operation but
a few operations. Similarly when we set
the first element to one, you have to do so
that this very similar set of things. Next to this is four loop and
with the four loop, again every time you you have to do a few things,
you need to increment the value of i. You don't need to compare i to n to see
if you need to break out of the loop and if it is, you need to branch, you need to move to another instruction
in your program after the four loop. Next up there's this additions and
here we have to do some things, we have to look up to values in the array, we have
write to a third value in the array. All of this involves the same
sort of pointer arithmetic, and memory lookups, and rights that
we were talking about before, but we also have to do this addition. And if it were just a normal addition,
maybe it wouldn't be such a big deal. However, this is addition of
two Fibonacci numbers, and if you'll recall from a couple of lectures
ago, we found that Fibonacci numbers we're pretty big, in fact, so big, they probably
don't fit in the single machine word. So adding two of them together actually
takes a non-trivial amount of time. So somehow,
not only do you have to do all of these, array of arithmetic things but,
the actual addition of the Fibonacci numbers is actually a pretty
non-trivial operation. And then, we do this return stuff where we
have to do an array lookup which involves all the sorts of things we talked about
already and then have to do a return which sort of is going to operate
with the program stack and sort of pop it up a level and
return an answer. So in conclusion, this program
has six lines of code to it but the amount of work being done in various
lines of code is very, very different. What exactly what goes into each line of
code is not sort of at all the same thing. Maybe we want to reconsider
the fact that this count, that the number of lines of code,
is sort of our run time. Maybe we need to measure something else. So what else should we do? Well, if y
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Xin chào tất cả mọi người, chào mừng bạn trở lại vào dữ liệucấu trúc và giải thuật chuyên ngành. Hôm nay, chúng ta sẽ nói vềnhững gì thực sự đi vào máy tính runtimes và thực sự hiểu như thế nàolâu một chương trình làm việc. Vì vậy đặc biệt,hôm nay chúng ta thực sự bổ nhào trong. Đến thời điểm này chúng tôisử dụng loại thô số lượng hàng của mã thực hiện tính. Và hôm nay chúng ta sẽ nói chuyệnvề chính xác làm thế nào điều này và những gì các loại biến chứng đi vào. Và đặc biệt chúng ta sẽ thấy rằng nếu chúng tôithực sự muốn cái gì mà sắp xếp của về cơ bản là một thước đo chính xácChạy thời gian, nó sẽ là một mess lớn. Chúng ta có thể mang lại cho tất cảsắp xếp các dữ liệu phụ mà không phải là thực sự thuận tiện cho chúng tôi. Và vì vậy, chúng tôi đang thực sự sắp xếp của nói về vấn đề mà đến trongvới điện toán runtimes trong các thuật toán. Một cái gì đó chúng tôi sẽ không đếngiải quyết thực sự cho đến khi các bài giảng tiếp theo. Vì vậy để bắt đầu với, hãy xem xétthuật toán này mà chúng tôi đã có cho máy tính số Fibonacci. Hãy nhớ rằng chúng tôi đã tạo một mảng. Chúng tôi phân công các phần tử 0 0. Các yếu tố đầu tiên để 1. Sau đó, chúng tôi có bốn lớn này lặp nơichúng tôi đặt i yếu tố để tổng hợp i trừ đầu tiên vàtôi trừ yếu tố thứ hai và sau đó vào cuối ngày chúng tôitrả lại các phần tử thứ n cho bạn. Vì vậy, chúng tôi xác định rằng khi chúng tôi chạy nàychương trình chúng tôi thực hiện về 2n + 2 dòng mã. Nhưng chúng tôi thực sự nên hỏi bản thân,là này số lượng hàng của mã thực hiện phát hành với một mô tả chính xáctrong thời gian chạy của thuật toán? Và, tôi có nghĩa là, bằng cách nào đó, ngầm,biện pháp này dòng mã giả định rằng loại bất kỳ hai dòng mãlà loại so sánh với nhau. Chúng tôi sắp xếp một hoạt động cơ bản. Và như vậy, chúng ta hãy thực sự xem xétchương trình này trong một số chi tiết và xem những gì đi vào một số trong những dòng này củaMã và xem như thế nào hợp lệ giả định này. Vì vậy để bắt đầu với, chúng tôi tạo ra mảng này. Và những gì sẽ xảy ra khi bạncố gắng để khởi tạo một mảng? Vâng, điều này phụ thuộc rất nhiều vàoHệ thống quản lý bộ nhớ của bạn. Về cơ bản, tất cả bạn phải làm làloại tìm thấy một số không gian trong bộ nhớ và sau đó nhận được để trỏ đến vị trí đầu tiên. Mặt khác, chính xác như thế nào bạn tìm thấynày, có lẽ bạn cần phải trộn một số thứ khác xung quanh để nhường chỗ cho nó, có lẽsau khi bạn phân bổ các mảng, sau đó bạn muốn bằng 0 trong tất cả các mục như vậybạn không có rác ngồi ở đó. Và như vậy, nó không phải là hoàn toàn rõ ràng. Nó phụ thuộc một chút về cách chính xácchương trình của bạn được giải thích. Nhưng nó có thể khá nhanh. Nó thực sự có thể mất một thời gian,tùy thuộc vào hoàn cảnh. Hãy nhìn vào dòng tiếp theo. Đây là một nhiệm vụ đơn giản,chúng tôi thiết lập các mục nhập 0-0. Tuy nhiên, nếu bạn thực sự nhìn vào điều này, ở mức độ máy tính, bạn đang làm một chútlàm việc nhiều hơn, bạn cần phải tải lên con trỏ đến 0 phần tử vào mảng, bạn có thểsau đó cần phải làm một số cấp số con trỏ, sau đó bạn cần để lưu trữ các chữ này0 vào vị trí đó trong bộ nhớ. Nó thực sự có thể không hoạt động một nhưngmột vài hoạt động. Tương tự như vậy khi chúng tôi thiết lậpCác yếu tố đầu tiên để một, bạn phải làm như vậythế này rất tương tự như các thiết lập của sự vật. Bên cạnh đây là bốn vòng lặp vàvới bốn vòng, một lần nữa mỗi lần bạn bạn phải làm một vài điều,bạn cần phải tăng giá trị của tôi. Bạn không cần phải so sánh tôi với n để xemNếu bạn cần phải thoát ra khỏi vòng lặp và nếu có, bạn cần phải chi nhánh, bạn cần phải di chuyển một hướng dẫntrong chương trình của bạn sau khi vòng bốn. Tiếp theo đó là bổ sung này vàở đây chúng tôi đã làm một số việc, chúng ta phải tìm đến các giá trị trong mảng, chúng ta cóviết thư cho một giá trị thứ ba trong mảng đó. Tất cả điều này liên quan đến cùngCác loại con trỏ số học và tra cứu bộ nhớ, và quyền đóchúng tôi đã nói chuyện về trước, nhưng chúng tôi cũng có để làm điều này bổ sung. Và nếu nó đã là chỉ là một bổ sung bình thường,có lẽ nó sẽ không là một vấn đề lớn. Tuy nhiên, điều này là bổ sunghai con số Fibonacci, và nếu bạn sẽ nhớ lại từ một vài bài giảngtrước đây, chúng tôi thấy rằng số Fibonacci chúng tôi khá lớn, trong thực tế, rất lớn, họ có thểkhông phù hợp trong máy word. Vì vậy thêm hai số với nhau thực sựphải mất một khoảng thời gian không nhỏ. Vì vậy bằng cách nào đó,không chỉ bạn phải làm tất cả những mảng của các phép tính số học điều Tuy nhiên,Ngoài những con số Fibonacci, thực tế là thực sự kháchiến dịch phòng không tầm thường. Và sau đó, chúng tôi làm công cụ này quay trở lại nơi mà chúng tôiphải làm một tra cứu mảng đó bao gồm tất cả các loại những thứ chúng ta nói vềđã và sau đó phải làm một trở về mà sắp xếp của sẽ hoạt độngvới các chương trình ngăn xếp và phân loại các bật nó lên một cấp độ vàtrở lại câu trả lời. Vì vậy, trong kết luận, chương trình nàycó sáu dòng code để nó nhưng số lượng công việc được thực hiện trong nhiềudòng mã là rất, rất khác nhau. Những gì chính xác những gì đi vào mỗi dòngmã không phải loại ở tất cả những điều tương tự. Có lẽ chúng tôi muốn xem xét lạithực tế là điều này đếm, mà số lượng các dòng mã,là sắp xếp của chúng tôi thời gian chạy. Có lẽ, chúng ta cần phải đo cái gì khác. Vì vậy chúng ta nên làm gì nữa? Vâng, nếu y
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Xin chào tất cả mọi người, chào mừng trở lại dữ liệu
cấu trúc và các thuật toán chuyên môn. Hôm nay, chúng ta sẽ nói về
những gì thực sự đi vào các thời gian chạy máy tính và thực sự hiểu thế nào
lâu mới có một chương trình làm việc. Vì vậy, đặc biệt,
hôm nay chúng tôi đang thực sự sẽ đi sâu vào. Tính đến thời điểm này, chúng tôi đang
sử dụng loại này số thô của dòng mã thực hiện đếm. Và hôm nay chúng ta sẽ nói
về cách chính xác này là gì và các loại biến chứng đi vào. Và đặc biệt chúng ta sẽ thấy rằng nếu chúng ta
thực sự muốn một cái gì đó là loại cơ bản là một thước đo chính xác của
thời gian chạy, nó sẽ là một rối lớn. Chúng ta sẽ phải mang trong tất cả
các loại dữ liệu bổ sung mà không thực sự thuận tiện cho chúng ta. Và như vậy, chúng tôi đang thực sự loại nói về những vấn đề mà đi
với tính toán thời gian chạy trong các thuật toán. Một cái gì đó mà chúng ta sẽ không
giải quyết thực sự cho đến các bài giảng tiếp theo. Vì vậy, để bắt đầu, chúng ta hãy nhìn vào
thuật toán này mà chúng ta có để tính số Fibonacci. Ghi chúng tôi tạo ra một mảng. Chúng tôi giao các yếu tố 0 đến 0. Yếu tố đầu tiên là 1. Sau đó, chúng tôi có bốn vòng lặp lớn này, nơi
chúng tôi đặt yếu tố i để tổng của tôi trừ đi đầu tiên và
tôi trừ yếu tố thứ hai và sau đó vào cuối ngày chúng tôi
trả lại phần tử thứ n với bạn. Vì vậy, chúng tôi xác định rằng khi chúng ta chạy này
chương trình chúng tôi thực hiện về 2n + 2 dòng mã. Nhưng chúng ta nên tự hỏi mình,
là con số này của dòng mã thực hiện phát hành với một mô tả chính xác
của thời gian chạy của thuật toán? Và, tôi có nghĩa là, bằng cách nào đó, mặc nhiên,
biện pháp này của dòng mã giả định rằng loại của hai dòng mã
là loại có thể so sánh với nhau. Họ đang sắp xếp của một hoạt động cơ bản. Và như vậy, chúng ta hãy thực sự nhìn vào
chương trình này trong một số chi tiết và xem những gì đi vào một số trong những dòng
mã và xem làm thế nào có giá trị giả định này là. Vì vậy, để bắt đầu, chúng tôi tạo ra mảng này. Và điều gì sẽ xảy ra khi bạn
cố gắng khởi tạo một mảng? Vâng, điều này phụ thuộc rất nhiều vào
hệ thống quản lý bộ nhớ của bạn. Về cơ bản, tất cả các bạn phải làm là
loại tìm thấy một số không gian trong bộ nhớ và sau đó nhận được để con trỏ đến vị trí đầu tiên. Mặt khác, chính các bạn tìm thấy
này, có lẽ bạn cần phải xáo trộn một số thứ khác xung quanh để nhường chỗ cho nó, có lẽ
sau khi bạn phân bổ mảng, sau đó bạn muốn không ra tất cả các mục để các
bạn không có rác ngồi trong đó. Và như vậy, nó không hoàn toàn rõ ràng. Nó phụ thuộc một chút về cách chính xác
chương trình của bạn đã được giải thích. Nhưng nó có thể là khá nhanh. Nó thực sự có thể mất một thời gian,
tùy thuộc vào hoàn cảnh. Hãy nhìn vào các dòng tiếp theo. Đây chỉ là một nhiệm vụ đơn giản,
chúng tôi đặt mục 0 đến 0. Tuy nhiên, nếu bạn thực sự nhìn vào điều này, ở cấp độ máy, bạn đang làm một chút
công việc nhiều hơn, bạn cần phải tải lên các con trỏ tới phần tử 0 đến mảng, bạn có thể
sau đó phải làm một số phép tính con trỏ, sau đó bạn cần phải lưu trữ đen này
0 thành vị trí này trong bộ nhớ. Nó thực sự có thể không phải là một hoạt động nhưng
một vài thao tác. Tương tự như vậy khi chúng tôi đặt
yếu tố đầu tiên để một, bạn phải làm như vậy
mà bộ này rất tương tự của sự vật. Bên cạnh này là bốn vòng và
với bốn vòng, một lần nữa mỗi khi bạn bạn phải làm một vài điều,
bạn cần phải tăng giá trị của tôi. Bạn không cần phải so sánh tôi với n để xem
nếu bạn cần phải thoát ra khỏi vòng lặp và nếu được, bạn cần đến chi nhánh, bạn cần phải di chuyển đến hướng dẫn khác
trong chương trình của bạn sau bốn vòng lặp. Tiếp theo đó là bổ sung này và
ở đây chúng ta phải làm điều gì đó, chúng ta phải tìm đến các giá trị trong mảng đó, chúng tôi có
viết thư cho một giá trị thứ ba trong mảng. Tất cả điều này liên quan đến cùng một
loại con trỏ số học, và tra cứu bộ nhớ, và các quyền mà
chúng ta đã nói về trước, nhưng chúng tôi cũng phải làm ngoài này. Và nếu nó chỉ là một bổ sung bình thường,
có thể nó sẽ không được một việc lớn như vậy. Tuy nhiên, điều này là bổ sung của
hai số Fibonacci, và nếu bạn sẽ nhớ lại từ một vài bài giảng
trước đây, chúng tôi thấy rằng số Fibonacci chúng tôi đang khá lớn, trên thực tế, quá lớn, họ có thể
không phù hợp với các máy tính đơn lẻ từ. Vì vậy, thêm hai người với nhau thực sự
mất một số tiền không nhỏ của thời gian. Vì vậy, bằng cách nào đó,
không chỉ làm bạn phải làm tất cả trong số này, mảng thứ số học nhưng,
việc bổ sung thực tế của các số Fibonacci thực sự là một khá
hoạt động không tầm thường. Và sau đó, chúng tôi làm điều này thứ trở lại nơi mà chúng tôi
phải làm một tra cứu mảng trong đó bao gồm tất cả các loại điều chúng tôi nói về
rồi và sau đó phải làm một trở lại trong đó loại sẽ hoạt động
với các chương trình ngăn xếp và phân loại của bật nó lên một mức độ và
trở lại một câu trả lời. Vì vậy, trong kết luận, chương trình này
có sáu dòng code để nó nhưng số lượng công việc đang được thực hiện trong nhiều
dòng mã là rất, rất khác nhau. Những gì chính xác những gì đi vào từng dòng
mã không phải là loại ở tất cả những điều tương tự. Có lẽ chúng ta muốn xem xét lại
thực tế rằng số này, số lượng các dòng mã,
là loại thời gian chạy của chúng tôi. Có lẽ chúng ta cần phải đo lường cái gì khác. Vì vậy, những gì khác chúng ta nên làm gì? Vâng, nếu y
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: