What's an algorithm? - David J. Malan
HTML-код
- Опубликовано: 8 фев 2025
- View full lesson: ed.ted.com/less...
An algorithm is a mathematical method of solving problems both big and small. Though computers run algorithms constantly, humans can also solve problems with algorithms. David J. Malan explains how algorithms can be used in seemingly simple situations and also complex ones.
Lesson by David J. Malan, animation by enjoyanimation.
David J. Malan is one of the GREATEST professors u may see throughout ur whole life !
+Eslam Mohamed agreed!
Agree
Yes. There are a lot of great profs out there though, like Marvin Minsky, Andrew Appel, Manuel Blum, Peter Ramadge, Richard Murray, etc.
Yeah, his cs50 makes me fall in love with computer science.
@@fritzhopper5145 yes bro. Loved it
great now I can count how many people are in a room
+Joseph Spagnolo Yes me too !
lol
lol
Inex Alpha a
Cool
Wow...Wow... This is one of the simplest and easy to watch videos I have watched on Algorithms. It passed the understanding of algorithms so clearly and the animations also helped to understand it greatly... Thanks so much for this video!
Simple is good if it was correct.
The counting by pairs algorithms in incorrect.
The concept of a "pair" is misused.
Eg. For 3 people there are 3 pairs.
For n people, n choose 2 pairs.
Thus algorithm actually grossly undercounts.
@@Grassmpl😂🤣🤣🤣🤣🤣🤣🤣🤣🤣
then you may like the free online courses he still teaches called cs50
my school uses your videos to teach us and as notes :) that's how good you are
this is a company ya dum dum
tbh it's not that hard to explain something better than your average highschool teacher
Technically they are a nonprofit organization the difference is companies are created with the goal of creating profit and organization are created with the main function of doing something for humanity/animals/or something else.
Well, he's a Harvard professor, after all.
It's not hard to make your average person understand better than the average highschool student, what, with all those hormones fogging your brain and everything.
I love how these videos are short and still better than a lot of longer videos about the same subject out there.
The longer videos are more accurate.
The counting by pairs algorithms in incorrect.
The concept of a "pair" is misused.
Eg. For 3 people there are 3 pairs.
For n people, n choose 2 pairs.
Thus algorithm actually grossly overcounts.
@@Grassmpl😂🤣🤣🤣🤣🤣🤣🤣🤣🤣アルゴリズムだ❗規則正しく同じ言葉を繰り返している❗
@@nsadegcmlf2116 私は日本語が話せません、英語を使う必要があります
2:00 I can't help but think of the case where a person enters or leaves the room during the loop. In a real program, these are things we need to watch out for too.
Yes, great point. This comes under edge cases.
My "understanding" of algorithms was very muddled until I happened on this video. Thank you so very much.
Congratulation
Love David Malan, his teaching method is so easy to follow!
Except it's misleading.
The counting by pairs algorithms in incorrect.
The concept of a "pair" is misused.
Eg. For 3 people there are 3 pairs.
For n people, n choose 2 pairs.
Thus algorithm actually grossly overcounts.
@@Grassmpl🤣😂😂😂😂😂😂😂😂
I really like the way you create your content, the animation and the simplicity it makes the content easy to consume and interesting
Thank you sooo much I’m going to start getting a BS in the fall of 2020 and I hear everyone saying algorithms are hard but watching you make it look basic just makes me feel a lot more confident to take on Computer science
@Ali Raza 😂
@@giztherapper7708violation😂
How are you fairing on?
@@theman.7s bro must have quit life after seeing that algorithms weren’t just to count the number of people in a room
It’s been 5 years…🎉
I watched the video earlier. And today I am at the very end of finishing CS50. When I watched this video I didn't know who David J. Malan is. But now I know he is my favorite teacher of all time. Love for David and CS50. ❤️❤️❤️❤️❤️❤️ And thanks to the RUclips algorithm for bringing me back to the video.
This comes extra handy now that we have the COVID-19 when everyone is home schooled
Kaydience Pugh no
SHUSHhhH
Aman Hussain didn’t ask
I see how you used the word handy
And this is CS50
Yup.
Counter strike 50?😂
Ig you didn't meant that
thank you prof david, you made me learn programming and really getting in depth of what programming is all about
NB: The word 'algorithm' has its roots in Latinizing the name of Muhammad ibn Musa al-Khwarizmi in a first step to algorismus. He was a Persian mathematician, astronomer, geographer, and scholar in the House of Wisdom in Baghdad, whose name means 'the native of Khwarazm', a region that was part of Greater Iran and is now in Uzbekistan.
About 825, al-Khwarizmi wrote an Arabic language treatise on the Hindu-Arabic numeral system, which was translated into Latin during the 12th century under the title Algoritmi de numero Indorum. This title means "Algoritmi on the numbers of the Indians", where "Algoritmi" was the translator's Latinization of Al-Khwarizmi's name.[15] Al-Khwarizmi was the most widely read mathematician in Europe in the late Middle Ages, primarily through another of his books, the Algebra.[16] In late medieval Latin, algorismus, English 'algorism', the corruption of his name, simply meant the "decimal number system". In the 15th century, under the influence of the Greek word ἀριθμός 'number' (cf. 'arithmetic'), the Latin word was altered to algorithmus, and the corresponding English term 'algorithm' is first attested in the 17th century; the modern sense was introduced in the 19th century
Anything having David Malan involved in it will always be the best
The word "algorithm" comes from 8th century *Muslim mathematician, Al Khwarizmi.* he is the inventor of algorithm.
No man he borrowed from India's mathematics.
@@suvamjitmishra7597 Yes, he borrowed numbers 0-9, but not the process, algorithm itself is a process we are talking about. just like algebra.
@David Lim, It's a set of procedural steps and conditions that allow a condition to turn from unresolved to resolved. It's a map pointing to treasure, It's a method developed to form the same solution under any condition of the parameter.
Muḥammad ibn Mūsā al-Khwārizmī[note 1] (Arabic: محمد بن موسى الخوارزمی; c. 780 - c. 850), formerly Latinized as Algoritmi,[note 2] was a Persian[3][4] scholar in the House of Wisdom in Baghdad who produced works in mathematics, astronomy, and geography during the Abbasid Caliphate.
In the 12th century, Latin translations of his work on the Indian numerals introduced the decimal positional number system to the Western world.[5] Al-Khwārizmī's The Compendious Book on Calculation by Completion and Balancing presented the first systematic solution of linear and quadratic equations in Arabic. Because he is the first to teach algebra as an independent discipline and introduced the methods of "reduction" and "balancing" (the transposition of subtracted terms to the other side of an equation, that is, the cancellation of like terms on opposite sides of the equation), he has been described as the father[6][7][8] or founder[9][10] of algebra.
He revised Ptolemy's Geography and wrote on astronomy and astrology.
Some words reflect the importance of al-Khwārizmī's contributions to mathematics. "Algebra" is derived from al-jabr, one of the two operations he used to solve quadratic equations. Algorism and algorithm stem from Algoritmi, the Latin form of his name.[11] His name is also the origin of (Spanish) guarismo[12] and of (Portuguese) algarismo, both meaning digit.
Zac eagle the more you know
So cool
Thank you for providing additional knowledge.
Now I have to do more research on Al Kwarizmi and his works too,coz I'm in need of a headache!🥰
didn’t reas
David J. Malan is one of the GREATEST professors u may see throughot whole life !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This has to be the simplest, well-explained, and fun tutrorial I've come across😂
Yes. Now it needs to be **accurate**
The counting by pairs algorithms in incorrect.
The concept of a "pair" is misused.
Eg. For 3 people there are 3 pairs.
For n people, n choose 2 pairs.
Thus algorithm actually grossly overcounts.
you may like the free online courses he still teaches called cs50
THEY WAY HE EXPLAIN STUFF IS JUST AMAZING
They actually changed the title now to the better "What is an algorithm?" I think it's previous title was how the human body could perform algorithms or something like that. Hope this sheds light on things.
Woah, ancient comment
Thank you Dr David Malan for making this Computer Video for all of us to use.
David.j.malan, so good with his explanations, I'm taking his cs50 course right now, and I can say he is the best professor ever!
ikr🥺
Gotta love the people in this animation and the way he teaches.
Great video, going to show this to my students as an overview to algorithms. Thanks :)
Always love to hear your lectures whether it’s on ocw or anywhere else!
Thank you 🙏 now I understood algorithm easily and never forget it in my life
Guys, please keep uploading more such content. It really helps people like me find answers to our problems.
I came here because I was bored but it ended up helping me understand MATLAB a little better for school
Emilio Couchee school?
MATLAB means "means" U know hindi ?
In Hindi, the word "matlab" means "MEANS" 😎😎😎
Guys the matlab like in a library for python!
@@indrajitsinhchudasama739 matlab is a language not a library
This is by far the best explanation I’ve seen!
but in order to know if there is a pair the program has to count one by one, so how is faster the second algorithm than the first?
You count a pair. A pair. 1 pair.
+Murariu Ciprian A computer could only know it's a pair by counting each person in the pair. Our brain does this for us so we don't have to count that there are two people in the pair.
Read the last comment from me, you're right.
Thats what we call a catch 22
@@Ferrolune counting eyes is obvious, we told the computer to count the number of people and multiply by two. (btw this doesn't work if there is a pirate in the room). But there aren't any magic labels that group every 2 persons into a pair. We have to count each individual person to know.
This video is the best video I have watched on algorithms. Very understandable.
brain : what are u doing
me : trying to study
brain : why
me : to be success full in my life
brain: then why are you learning to count people in a room
😄 feels like time waisting activity
same bro
That depends on the language and the context its used in. Some languages have the = operator as assignment operators, some have = as comparation operator,and others may have both and the context decides how it is interpreted
3:30 That one third wheel.
This dude has such a relaxing voice to listen to
That 8bit tune was awesome! :D
Well in cubing (Solving a rubik's cube) algorithms are a series of face turns that permutes and/or orients a specific (set of) pieces.
I know Dave from CS50!
This is fantastic and I love the way the animation simplifies this!
After learning some python, this video became easy stuff.
you learned stuff about a snake?
I learn R
Did you seriously need to learn python to learn how to count?
Same here
High five bro
A set of step by step instructions to do / achieve / solve something.
This really helped me cause I was sick the day we learned this so thanks.
Same thing happened here 😁😁
wow...this is the simplest explanation of the algorithm I have ever come across. T hank you, was very insightful
Very helpful, thank you!
Thanks for revealing to me what I already knew, namely, that I am still as clueless to what an algorithm is as I was before I watched this video.
Sincerely,
N
Oh Gosh! This is the video by the guy who teaches CS50!! Amazing teacher!
And professor David J Malan is one of the best professor of this era🙏🙏🙏
Imagine sorting algorithms being personified and Gravity sort just does magic tricks
Wait till you see Counting Sort and Pigeonhole Sort
Very simple way teach a subject that can get complicated to your average student, very good!
Have been trying to learn coding since a year. This 4 and a half minute video has helped me understand coding. I am excited to get back to learning. Thank You David
How did you translate this video into coding......?
you may like the free online courses he still teaches called cs50
Very intuirivie, creative and simple way to explain things. Just awesome!
1. Set yourself to watch this video
2. If you liked it, press the Like button
It was eleven years ago and amazing how i still can learn from it, what a nice investment!
Thank you for developing this, Mohammed ibn Musa al-Khwarizmi, aka Algoritmi.
Algebra, Alchemy. it's good to remember who made these contributions to the world~
oh fuck off
i can't tell if you consumed salt, or if salt consumed you
you forgot to mention his nationality .. by the way he was persian(iranian) and trough history iranian always been educated and smart . no matter what he believes because we aren't into his mind .. i am iranian as well but you arab muslim no nothing but lowing your self up and killing innocents that is your religion
Yes my brother our scientist 😍😍 Mohamed abo jaafar khawarizmi thank you inchallah the janaa
We could confuse him further by saying, that some languages even accept constructs like "N++" or "N+=1".
But to complete the explanation above, a comparison is done by "==" in most languages. So "N=N+1" increases the value of N, but "N==N+1" compares both sides and returns "false" if used in a numerical fashion.
if you use a for loop for this, you would have to know how many people are in the room to begin with. Maybe this should say "while a person is uncounted"?
+speedrocks2
while(person != counted)
{
*Algorithm here* //Love while loops!
}
Thanks to you I can understand how code run and how to think
That's literally introduction to programming
What makes it great is David himself explains it !!✨
I took a Computer Science course taught by the narrator, a HarvardX course. He's a great teacher
Your analogy just blew my mind.
Thank you very much for that.
This reminds me of the time I programmed an algorithm that can generate a perfectly connected random jigsaw puzzle.
And this was before I knew about recursive code, which would probably have made it a lot easier.
Navnik BHSilver Teach me your ways.
Malan really is an amazing teacher! You can't but love CS after listening to this guy teach!
N = 0; foreach (dozen people in room) {N += 12}if (N != 0) {N = N + N%12}; how about this?
Tomáš Fuk Here it is in the programming language ruby, it works (:
def count(people)
n = 0
loop do
if people >= 12
people -= 12
n += 12
elsif n != 0
people -= n % 12
n += people % 12
end
break if people == 0
end
puts n
end
people = gets.chomp.to_i
count(people)
crestfallenllama Really interesting :) Personally, I've never used Ruby, but being C# person myself, I always found it really confusing when you don't use braces for your code.. But if you like it, more power to you! Where did you learn it?
Tomáš Fuk In Ruby I think it's faster to write code, and get something done at least it's easier to understand while looking at it, so as a starting language it's perfect, and for smaller programs like this it's perfect, but the speed is not the best and I think the c languages is more optimal when making larger things like games.
I started learning it at codeacademy, but after that I thought to myself: "What can I actually do in Ruby?", and then I took all the lessons from Rubymonk, these are more advanced and I learned a ton. I wanted to learn Ruby because rpg maker vx ace uses that language. After I'm done with my game there I will probably try unity, I'm already beginning to learn c++.
you don need each
I'm years late, but you can check if N!=0 just by writing *if N*, because 0 equals false, so it will return true in every other case
Amazing! Sir David J. Malan.
Anyone from The Odin project?
I am!
Odinite here! I went looking for this comment 😄
Wow...I love this, so simple and straight forward...
A recommander à tout étudiant en BTS SIO informatique !
This is fantastic and I love the way the animation simplifies algorithm!
4:39 how to always get your comment on top.
Heyyy u are top comment.
David teaches the free course cs50 at Harvard. Great course for anyone looking to learn more about computer science. Note that the exercises are extremely hard and you may be better off skipping them as a beginner.
At 4:39, My answer is that I would solve a rubik's cube.
Nicolino Will Same 😂😂
Syed Mohammed Habeeburehman YEAH
Last music was just awesome!
or you can skip the algorithem and say:
n=amount of people in room
what if the number of people is dynamic
Same energy as
if(goingToCrashIntoEavhOther)
{ dont( ) ; }
Now _this_ is efficient
If you don't even know the amount of people in room
!
How could you tell that n = amount of people in room?
It's like asking someone "How many people in the room? and your answer is "How many".
@@AxeAR No! It's not.
Great explanation
Algorithms are a set of of instructions to solve problems that executed by computers or human. Then, am I programmed to wrote this comment to solve the problem that I wanted to do so by typing this on the keyboard ? What if we were written with a super complex algorithm. the code is so complex and it is infinite. So, who wrote that set of instruction?
yeah evolution just happened to create such intelligent organisms
It's a bug in Nature's algorithm that we, human beings, can have consciousness and eventually have conversations like this.
An algorithm is a set of mechanical steps that always terminates and always gives us all the right answers and no wrong answers to a question.
This algorithm is wrong,John Cena is sleeping on the bed but he isn't counted
that was surprisingly interesting for something as trivial as counting people in a room
is it not simple to say
set N =0
count number of people
put number of people into N. how would you go about implementing this.?
+xganh zu count number of people would still require a loop because you still have to go through say N people so even if you wanted to use this you are simply still going to need a loop and after that you are just copying the value from one location to another
this is called a funciton.
+Michael Chen OK thanks : ) I wanted the use to enter the number of people but it's simpler to use a loop.
+xganh zu you ruined my understanding.. D:
not me if you are interested research livecode, it is a coding language which uses english. :) i do not understand programming either.
clear and precise in explaining Algorithm
Words are algorithms connected to comprehension
Great Professor David J. Malon, thank you for the well explanation. You are Feynman of Computer Science.....
I am Student @ SE ALx, one day I will be like you.
Agortihm at the end is wrong. it works for pairs but not for x=3,4,5,..., 10. Becasue it would not add anything if there are between 2 and x and ony in cases where there is one person left in the room it would add him/her.
Yes! was wondering if anyone else noticed!!
+0ShadowG0 but it says "for each pair of people in room" so if lets say it is 9 people in the room it will count 4 pairs, and then add the one person left... right?
+burt591 you could do any number when you do it like this :
if x is number of people add x to N
if x-1 is number of people add x-1
if x-2 is......
(sigh) it will do any number just as it is, as burt591 illustrated.
Your solution is recursive: it requires you to know the number of people in the room before you start counting them.
@@burt591 in any group of 3 people there are 6 possible pairs......
Excellently explained!
wow i become smart
😂😂😂
In programming, "=" isn't a conditional operator; it's an assignment operator. Think of lines of program code as the programmer telling the computer, "Okay, this statement you're about to read isn't true and I need you to make it true." The computer then evaluates the expression on the left side of the "=" and assigns the result to the variable on the left. "N=N+1" means "take the current value of "N", add 1 to it and reassign the new value to "N".
Sounds like basic computer language
i made a algorithm for love because my girlfriend broke up with me and she was cheating on me...
Can I see it
If I can find it. I posted it on some forum. I made it in JavaScript a while ago. Its really bad.
ok
+ron thattrollagen (troll) What iz it lellelelelell
yjae magno yummy yummy tapeworms
I was think that algorithm is complicated but it's easy thank you Ted-ed to explain it and make it easy
Does that mean I can use algorithm to study algorithm?
Lesson 2: what is recursion
Never knew before becoming a cricketer, David Malan was a ted-ed speaker
Wouldn't this just be illogical because of how uselessly complex it is.
Added to our favourites playlist :)
What a perfect teaching. Awesome
Thanks for the quick programming lesson dude
Great video and a simple explanation as well! Thank you!!!