TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Introduction to Algorithms (2020)

309 点作者 debanjan16超过 2 年前

10 条评论

jmconfuzeus超过 2 年前
I&#x27;m studying algorithms too right now.<p>As someone who sucks at maths and puzzle solving in general, Steve Skiena&#x27;s book is proving to be quite approachable for me. Although I have to jump back and forth between the book and Khan Academy to look up some of the Maths.<p>He also has video lectures for the book: <a href="https:&#x2F;&#x2F;www3.cs.stonybrook.edu&#x2F;~skiena&#x2F;373&#x2F;videos&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www3.cs.stonybrook.edu&#x2F;~skiena&#x2F;373&#x2F;videos&#x2F;</a><p>Another thing that helped me was brushing up on C programming skills. As a Python programmer, algorithms like hash maps don&#x27;t make any sense because you just slap keys and values on a dictionary and call it a day but in C, you get to see how buckets and hash functions are used to build hash maps.
评论 #32876887 未加载
评论 #32877860 未加载
rav超过 2 年前
In the syllabus [1] they state that you need to be able to obtain above a grade C on &quot;Problem Set 0&quot; [2] <i>before</i> you take this course.<p>In my experience teaching 1st year undergrad algorithms, I&#x27;d be surprised if the average 1st year student that has just passed an &quot;Introduction to algorithms&quot; course would even be able to solve Problem Set 0.<p>However I don&#x27;t think we should delay teaching algorithms until several years into the CS university curriculum. It&#x27;s too important and central a topic to miss out on. We really need an intro algorithms curriculum that can teach both the basics (as in Problem Set 0) and the algorithms and data structures in the textbook.<p>[1] <a href="https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;6-006-introduction-to-algorithms-spring-2020&#x2F;pages&#x2F;syllabus&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;6-006-introduction-to-algorithms...</a><p>[2] <a href="https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;6-006-introduction-to-algorithms-spring-2020&#x2F;60f0a029ab154553cad51b54cc25605b_MIT6_006S20_ps0-questions.pdf" rel="nofollow">https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;6-006-introduction-to-algorithms...</a>
评论 #32882360 未加载
评论 #32881606 未加载
评论 #32881347 未加载
obilgic超过 2 年前
Here is my latest life hack that I have been using. Pick a major from MIT and see their degree program to form a basic knowledge graph of the major. Find them on <a href="https:&#x2F;&#x2F;ocw.mit.edu&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ocw.mit.edu&#x2F;</a> and study yourself. Usually, taking 1-2 classes gives you a great insight in to any topic so that you can at least collaborate better with the experts of those topics in a team environment.
评论 #32876254 未加载
评论 #32875814 未加载
评论 #32876135 未加载
评论 #32876144 未加载
zasdffaa超过 2 年前
I&#x27;ve spent a lot of time learning algorithms, and learning that certain ones exist, without learning their precise details (for future use). They have never got used. Maybe I used a bloom filter once.<p>It&#x27;s had some value in knowing when a certain algorithm is inappropriate, but otherwise it&#x27;s been a massive waste. Surely things can be better than this?<p>Jobs bleat for &quot;creative, intelligent people with a knowledge of algos + data structures&quot;, so why won&#x27;t you use this?
评论 #32876051 未加载
评论 #32877302 未加载
Zamicol超过 2 年前
YouTube lecture playlist: <a href="https:&#x2F;&#x2F;youtube.com&#x2F;playlist?list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY" rel="nofollow">https:&#x2F;&#x2F;youtube.com&#x2F;playlist?list=PLUl4u3cNGP63EdVPNLG3ToM6L...</a>
Yajirobe超过 2 年前
Erik Demaine is a genius
评论 #32876709 未加载
chirau超过 2 年前
I have always wondered if there would be value in a certification or course track in just Algorithms and Algorithm Design. It&#x27;s such an intricate but very important field that it can have its own curriculum and be separated from CS. Well, not necessarily separated, but can be considered independently of other CS fields even though it is still part of a CS degree.<p>There are tons of applications of competency with Algorithms beyond CS. I hate that a person who has great competency with this kind of stuff has to do and be evaluated on the whole CS bundle as if that is only where it matters.
评论 #32875949 未加载
评论 #32875959 未加载
评论 #32877070 未加载
tester756超过 2 年前
What does &quot;proficiency in algorithms&quot;? mean? that&#x27;s general question
评论 #32879664 未加载
graycat超过 2 年前
Just looked at the &quot;Course Description&quot; of the &quot;Syllabus&quot; as at<p><a href="https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;6-006-introduction-to-algorithms-spring-2020&#x2F;pages&#x2F;syllabus&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;6-006-introduction-to-algorithms...</a><p>The course takes itself very seriously and seems to ask each student to devote a lot of time to the course.<p>My summary reaction is that it would be a shame to devote that much time to what is basically so little material.<p>Yes, the &quot;Syllabus&quot; mentions<p><i>Introduction to Algorithms</i>, Cormen, Leiserson, Rivest, and Stein, CLRS.<p>Years ago I downloaded a PDF and didn&#x27;t see much beyond what I&#x27;d gotten from Knuth, etc.<p>I can give a fast overview here:<p>There I see their lists of topics:<p>dynamic arrays, heaps, balanced binary search trees, hash tables<p>and<p>sorting, graph searching, dynamic programming<p>I&#x27;m a little surprised at how old these topics are: I first learned several of the topics almost entirely from<p>Donald E. Knuth, <i>The Art of Computer Programming, Volume 3, Sorting and Searching</i>, 1973.<p>(1) Dynamic Array<p>A glance at how it works explains why I never heard of it:<p>Can see<p>&quot;Dynamic array&quot;<p>at<p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dynamic_array" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dynamic_array</a><p>So, if have an array A and need more space, then allocate a larger array B and copy over the contents of array A to array B and continue with array B.<p>A guess is that in nearly all cases a better solution would be a tree where the array subscripts are used as keys and the array elements, as leaves.<p>Maybe the main reason to include dynamic arrays is to do some applied math to analyze by how much bigger array B should be than array A.<p>(2) Heaps<p>I like heaps.<p>At one point in the software of my startup, I have to search through maybe 1 million numbers and end up with the, say, 20 largest. For that I programmed a heap, and it has worked out great.<p>There are versions of the heap algorithm that are better on locality of reference and when the heap is carried mostly on slow, <i>secondary</i> storage.<p>(3) Balanced Binary Search Trees<p>AVL (Adelson-Velskii, Landis) trees are in the Knuth reference, and they are terrific. An alternative is red-black trees. One of those two is likely the key to .NET <i>collection classes</i>, and my startup uses two instances for a simple, light, fast <i>key-value</i> store instead of Redis.<p>(4) Hash Tables<p>Those are also in Knuth. Hashing usually leaves me in doubt due to its various possible problems. But better still sometimes is <i>perfect hashing</i> as I recall also in Knuth.<p>For hashing in general, a good step forward is in<p>Ronald Fagin, Jurg Nievergelt, Nicholas Pippenger, H. Raymond Strong, <i>Extendible hashing-a fast access method for dynamic files</i>, &quot;ACM Transactions on Database Systems&quot;, ISSN 0362-5915, Volume 4, Issue 3, September 1979, Pages: 315 - 344.<p>We used that in an AI (artificial intelligence) product we shipped.<p>(5) Sorting<p>Knuth covers heap sort and shows that it meets the Gleason bound for sorting by comparing pairs of keys.<p>(6) Graph Searching<p>Looking at their lecture notes, it appears that they mean versions of shortest paths on networks.<p>These are all fairly simple except for minimum cost single commodity network flows where each arc has a maximum flow and also a cost per unit of flow. The problem is linear programming, and the classic simplex algorithm applies and takes on an especially simple form -- a basic solution corresponds to a spanning tree of arcs.<p>Some good news is that if the arc capacities are all integers and if start the algorithm with an integer solution, then the simplex algorithm maintains an integer solution and will terminate with one.<p>It is tempting to see that &quot;good news&quot; as a case of progress in NP-complete integer linear programming.<p>For such content, I recommend<p>Mokhtar S. Bazaraa and John J. Jarvis, <i>Linear Programming and Network Flows</i>, ISBN 0-471-06015-1, John Wiley and Sons, New York, 1977.<p>(7) Dynamic Programming<p>That can be a big subject but does not have to be. I got a good introduction from an expert in about 90 seconds while my cab was waiting to take me to the airport. I ended up writing my Ph.D. dissertation in dynamic programming. For an easy introduction, can have fun, like eating from the appetizer plate at Thanksgiving, say, a half hour at a bite from<p>Stuart E. Dreyfus and Averill M. Law, <i>The Art and Theory of Dynamic Programming</i>, ISBN 0-12-221860-4, Academic Press, New York, 1977.<p>One of the amazing advantages of dynamic programming is how well it handles randomness -- then have stochastic optimal control, Markov decision theory, etc.<p>The flavor of dynamic programming in computer science can be a bit different, e.g., applied to search for some string A in some string B.<p>Maybe another purpose of the course is to get everyone all wound up and fired up about the question of<p>P versus NP<p>My recommendation is to try quite hard to ignore that question.
评论 #32882287 未加载
sylware超过 2 年前
Algorithms at that level are maths for computers. And mostly are for big data.<p>I think it is critically missing the word &quot;maths&quot; somewhere.
评论 #32876791 未加载