Hacker News new | past | comments | ask | show | jobs | submit login
Dealing with Hard Problems (2015) (artofproblemsolving.com)
435 points by mkagenius 10 months ago | hide | past | web | favorite | 65 comments

Polya's little "How to solve it" booklet has great advice.

It's great because it's addressed to math classes but based on the practices of a research mathematician. So it's not just solving the problems in the book, it's also about solving new unsolved problems. It's specific to math, but really useful for so many other questions.

There is much more to the book but one of my favorite parts is the Heuristics and their simple explanations. Wikipedia has a good table of them

  Analogy         Can you find a problem analogous to your problem and solve that?
  Generalization  Can you find a problem more general than your problem?
  Induction       Can you solve your problem by deriving a generalization from some examples?
  Specialization  Can you find a problem more specialized?
  Draw a Figure   Can you draw a picture of the problem?

The calm, deliberate attitude of the book is infectious, it's great for getting unstuck from tough problems. So do read the book itself in addition to the wikipedia article.

Thanks for sharing this! The steps in Wikipedia are so clear and concise in describing how I attempted to track down different bugs.

I'll definitely also read the book and use it as a guideline on what to try next instead of randomly asking myself "what else can I try?".

I got a great deal of insight on problem solving from being a university teaching assistant for 2 years. Every couple of weeks or so, there would be a particularly difficult assignment, and I would get many visitors during office hours that week.

The first thing I would always do is have the student walk me through their current understanding of the problem. What surprised me was how incredibly wide the range of mental models students used was. Also it was interesting that quite often students make their mental models far more complicated than the actual problem.

My job was really just to help the student simply and clarify their mental model, and from there they usually solved the problem on their own.

Smart data structures are better than smart code. I think this applies to your mind as well as code.

Kudos for doing that.

Such techniques involve asking pointed questions to the student and actually listening to what they say. This the basis for the Socratic Method and it fucking works.

Sadly, we have become so accustomed to "searching" for answers with queries (eg "googling it") that we're forgetting about really effective ways of learning and solving problems. We're even forgetting that learning and solving problems are the really part of the same activity.

The anti-pattern emerging is the "stackoverflow" style of problem-solving where it's all about the learner asking "the right questions" and getting smacked down for "the wrong questions."

I think this anti-newbie culture has been around far far longer than SO. It's probably just human nature to deride the rookies.

I have a model/interpretation for why their models are more complicated.

When you don't know something very well you have to consider a lot more possibilities, your search space is much larger. If you already know where you have to go you don't need the maps of the entire city, you can just get the section that covers your expected route.

When I entered the real world after my study (15 years ago), or maybe it was just a function of growing older, over time I realized that the biggest difference between people "who know" and those who don't is that they know all the things something is NOT, and all the ways something does NOT behave. When I compare my intuition or feelings for a big database system with how I feel today, I don't actually know all that much more in hard facts. But I handled such systems enough that I know what to expect andd what not. That means I could cut the uncertainty. It's hard to describe.

Or when I think back of how suspicious and even frightened I was when I sneaked into the garage when I was a kid and started the engine of my grandfathers car. No driving, just the engine. On a deeper level I did not have any experience on what to expect, what to feel. The intellectual level is no replacement, that's other parts of the brain, it does not replace actually doing something. Back in that car just by feel my "expectation space" was far too large compared to what actually happened, and what today I would expect when I start an engine. Knowing by having witnessed others do it was no replacement for getting my own experience (but it was enough to let me override my fears and give it a try)!

After studying a lot of medical topics over the last couple of years I realized the difference between a doctor and somebody like me 10 years ago, i.e. with zero education in any medical topic or genetics or biology (everything from school long forgotten so even that had to be relearned) is not how much more they know - the gaps even today are incredible (lots and lots of details, but on a whole-system level all they can do is trial and error like any non-medical person; no way to be confident about any drug without clinical trial, not even close, and even in the early phases it's all about actual experiments) - it's that they recognize "BS". They know what does not work much more than they know what works.

Okay, I think I did a terrible job expressing my fuzzy internal model. Maybe these two parts: The route of steps taken to map a territory in the first place looks overly complicated compared to what is needed to get somewhere when you already have a map, and doing it yourself is very different from being told.

That is very interesting. Before CS, I studied law and I noticed the following: I understood most of the very abstract concepts only when I learned what they were not. For example: In my country, there are several types of public lawsuits. I found it very hard to understand them from a "positive" definition. It only made sense when knowing why lawsuit type A was not lawsuit type B. I think it has something to do with the fact that they all are part of a larger system, but I also find it difficult to precisly express that. But I feel that – especially with abstract concepts – that it's what something is not that gives things it's shape.

Sounds like a mason working on a sculpture. You need to identify and cut off all the superfluous parts.

Abstraction is generalization of special cases. If you only consider one case, you can't generalize from it. Only when you get two, can you work out the differences and the similarities. It's like forming the intersection of two sets: You remove all the elements that are not part of both.

I wonder how accurate this process is. If you're not careful, you might confuse experience with being narrow-minded. Thinking outside the box requires you to consider exactly what you know you don't know.

> If you're not careful, you might confuse experience with being narrow-minded.

That's why we say the old generation has to die for new ideas to gain power. You are more open to new idea when you feel unsure and still have to build your internal model. Once it's somewhat settled the brain is reluctant to significant further change unless presented with overwhelming evidence - but it has also built up strong filters so that recognizing the evidence also is harder. See progress in science in general or medicine in particular.

Taking a break from sitting at the desk and going for a walk and thinking about the problem has worked surprisingly well for me many times. It was something I first read about in a Poincare's article on how Mathematical ideas are generated.

Coming to general methods of problem solving in recreational math, I always look for symmetry and transforming the problem from one problem space to another and induction techniques before attacking it. For a research/modelling problem, my approach is to start working on the most simplified version of it and gradually progress towards the original problem.

There is an excellent numberphile video on Josephus problem that illustrates how examining specific instances to observe patterns can help solve the general case.


Edit: Formatting

I am a developer and almost all the solutions to my software engineering (architectural) problems have occurred to me when I was walking. Even sitting down quietly dosen't work. I have to keep walking.

It has gotten so absurd that I do a lot of walking at my work, usually in an empty conference room and people have many a time wondered if I do any work at all.

But, I love it. The challenge, the walk and the solution is exhilarating to me.

We spend aeons hunting aka problem solving on the walk- i never understood why thinking was supposed to be a thing of motionlessness.

I always suspected its the triumph of some educators deep down in history - who had a preference for a quite audience over one restless challenging the presented ideas.

I believe most work places ought to have large sprawling gardens and beautiful landscaping. It would make me more productive for sure.

I am from India and most offices are in the middle of concrete jungles. Even in IT companies, there are no places to walk around. It's a shame.

Looking at houses in the US, especially rural areas makes my mind orgasm. Such serene places.

Good for you :) - for me, laying down with eyes shut is when I will have attractive solutions to hard problems! Happens sometimes standing in the shower but those all tend to be strategic ones unlike the tactical ones that get solved laying down.

Crazy stuff!

Reminds me of a chapter from the book "Surely you must be joking Mr. Feynman" (as far as I remember).

The chapter describes how Feynman came across how his colleague visualizes a task. IIRC Feynman does it visually (imagines something visual in his mind) and thus can do voice related activities while he is thinking, but his colleague does it by visualizing sound (he thinks tick-tock sounds in his mind), so can do visual tasks while he is thinking.

Really fascinating how a human mind works.

Also reminds me of the quote by Einstein, something about judging the ability of a fish to climb a tree.

Everyone has a unique and effective way to navigate the world intellectually.

> Also reminds me of the quote by Einstein, something about judging the ability of a fish to climb a tree.

Almost certainly not by Einstein, for what it's worth. It was probably made up by motivational speaker Matthew Kelly or someone close to him, as the earliest verifiable occurrence of the quotation is in his 2004 book The Rhythm of Life: Living Every Day with Passion and Purpose [1].

[1] https://quoteinvestigator.com/2013/04/06/fish-climb/

I wonder if it’s derived from the feminist slogan “a woman without a man is like a fish without a bicycle”?

Wow. Thanks for sharing that piece of trivia! Now I get what this song from 1981 - The fish needs a bike by Blurt - was referring to. I always thought it was a reference to some surrealist work or something :)


Ohh ok. Great to learn this bit of trivia. Almost everywhere I saw this quote (ahem, reddit) it is almost always associated with Einstein.

I have a heuristic: when a genius is quoted saying something that could've come from a TED talk, they probably didn't say it. Sometimes they said something kind of similar that got "sanded down" by meme evolution.

I tend to use my verbal/language capacity for analyzing problems, which makes it almost impossible for me to converse out loud at the same time.

It is from the other book by Feynman "What do you care what other people think?"

This works well for me too :) Specifically when I am going to sleep. Recently, I spent a couple of days working on "tight paving/tiles" problem from Knuth's Christmas Lecture ( https://www.youtube.com/watch?v=BxQw4CdxLr8 ) and surprised myself when I managed to exhaustively enumerate all valid arrangements(around 40 I think) for some small configuration while lying on the bed at night, something that I never thought I could do without a pen and paper.

Most of my hard work is done walking around the block or in a line at starbucks. Sitting at the desk things won't come into focus, and if they did someone would interrupt me.

I wrote a blog post about this.


The writers of the Men in Black movies called it "getting pie" and so do I.

You have to make time and space for lightning to strike.

> Taking a break from sitting at the desk and going for a walk

I cannot stress this enough. Being cooped up for long periods of time is very detrimental to tasks that must be carried out “in the head.”

And yet, I was confined to a small room for most of my childhood and I feel I managed to be more creative then than I am now, when I have the freedom to travel the world. I wouldn’t want to go back to staying inside a room most of the time though.

The article touches on something that helped me excel at university: I consistently scored high grades, but compared to others around me I seemed put in less time and effort. However, I don’t think I was significantly more capable or brighter than the majority. After spending several years studying alongside classmates, I do think the way I studied and ‘learnt to learn’ was quite different to the status quo.

Like the article mentions, being able to answer every question means that you’re not pushing yourself. I spent the majority of my time attempting questions that I didn’t think I’d be able to do, while many classmates would spend their time attempting questions they thought they would know. It forced me to constantly ‘solve hard problems’, and become better at doing so. A lot of the time I couldn’t successfully answer the questions I attempted, but in doing so I’d learn a lot anyway.

The article content is great, but I’d add that practice is an essential part of learning to solve hard problems. If you’re studying too, I’d really recommend the learning technique I used, at least to some degree - it will help you become a quick learner and good problem solver.

Thanks for the advice. I go to a top500 HS and all my peers seem to spend half the effort to get higher grades than me, and it seems I need to push myself harder in terms of the difficulty of the mathematics practice I do.

Side note: I used to think that the solution was expensive tutoring, but after attending a few tutoring sessions with little benefit, I slowly realized that tutoring (at least in my area) is for the unmotivated student who needs to be pushed by someone else. Just wanted to share my experience and say that it’s almost never the expensive prep classes that make a successful student.

> I go to a top500 HS and all my peers seem to spend half the effort to get higher grades than me

Let me assure you, this probably isn't the case: they've put in a significant effort as well, except they did it much earlier than you. This allows them to coast to schoolwork, since it's all easier versions of things they've done years ago–but they're probably working just as hard as you to get ahead in more advanced material.

No worries - I should add that I didn’t attempt problems that were too difficult either, e.g. if you’ve got absolutely no idea where to start then it’s not a valuable use of time. All the best with your study.

Funny thing about how I became a math major: I skipped precalculus in HS. All my peers that were as bright (or more) in my school were turned off by the year-long deathmarch of pointless bullshit[0] while I was taking more intuitive classes like Calculus and Linear Algebra. We both challenged ourselves, I just took the more fun challenges.

[0] https://socratic.org/questions/how-do-you-evaluate-sin-pi-5

Wow, this is exactly what I’m thinking. The advanced precalculus course at my school is actually harder than the college level calculus course and has much lower enrollment to the point where the course is being phased out.

A good way to learn is to become a TA. A few years ago I took an MIT chemistry class on edX. I had done zero chemistry since highschool, and even then I only learned for the tests - I knew I'd study CS so I was not particularly interested in learning any more chemistry then I already knew.

Whenever I was done with all the week's problems I scoured the (very active) forum for questions of other students. I tried to solve as many as I could, doing a lot (really a lot) of "Google-research", so I got to read lots of sources other than just the course. Then I presented the answer with as many sources as possible, and as well explained as I could. After three weeks I was made a TA, and I remained the only one to the end of that course. The only difference between me and any other student was that I tried solving problems, and using the ones other students had was the "cheapest" way to get enough of them, and also helps to stay on topic and not get distracted by doing too much too far outside of the current course.

I used that same method in a few other courses (and was offered the TA role a few more times but declined). I hope that makes up for my failure as a TA/teacher back at university, where I got to lead a "CS work group" (not sure how to translate the original German word) at a local high-school - and saw my class dwindle from ~30 to 2 kids before I quit... teaching is hard!

Thanks for sharing your learning approach - could you elaborate a little more with some examples on how you tackled difficult subjects?

It's worth noting that this basically gives you competitive tips - how to be more effective at solving a problem after it's been given to you. I think it's much more valuable to be good at recognizing important problems that others don't believe are important.

"Excellent Sheep"[1] by William Deresiewicz is a great read on this topic.

Also, his "Solitude and Leadership"[2] talk at West Point in 2009, which probably inspired to write the book.

[1] https://www.amazon.com/Excellent-Sheep-Miseducation-American...

[2] https://theamericanscholar.org/solitude-and-leadership/

How do you deal with being the company's Cassandra (I am in that predicament at the moment) ?

It's nowhere near as bad or pervasive as the competition to get into student debt. But I'm not really sure what psychotherapy would work. Maybe convince people to read about mimetic theory.

This. Problem finding is a harder problem than problem solving .. heh. That said, whether or not others believe it to be important is only a matter of whether the problem is important for your career.

Problem finding requires the backing of curiosity and curiosity has no teeth without well developed knowledge and skill. i.e. Problem finding is effective in areas that you've spent considerable brain time on. So the path to top class problem finding is a long hard road that demands patience. Those who find it easy to solve problems that are given to them often are not motivated to travel this road (at least in the instances I have seen), while those who have to struggle a bit but not too much manage to stay on the road.

Sometimes I find myself being cynical about all the emphasis on "problem solving" in hiring especially with puzzles .. like problems are always handed to you in well defined mathematical form in the real world. I'm looking for folks who have the courage to ask "why is this problem important?"

These types strategies, along with persistence are what got me through a math degree that I felt highly unqualified for, especially when I started. They’ve served me well professionally as well. As an “analyst” techniques have served me well in producing actionable/appreciated insights. For anyone aspiring:struggling in depths of mathematics I would suggest reading up on the lives of historical mathematicians.(I’m A big fan of Galois) It’s important to remember that we are truly humble in the face of ignorance. mathematics, and only through the endeavors of struggle and confusion do we chip away at the moutain of ignorance. Good luck to all those to venture into the darkness.

Claude Shannon wrote a great piece on methods of problem-solving: http://www1.ece.neu.edu/~naderi/Claude%20Shannon.html

Wonderful write up. Thanks for the share.

I tried looking into ways to improve my problem-solving a few years ago. I think problem-solving changes depending on whether or not you know the end goal. Problem solving without knowing the end result seems to involve separating parts of the problem into systems, fitting said systems in your head space, mentally making them run, and then noticing new problems. There are bookshelves of books for what to do when you have a specific goal in mind. Mainly work backwards and remove obstacles. I figure most of the people on this site probably work between the two extremes, and do simulation/testing as well. Careful thinking seems to improve overall speed, but that's what i'm worst at.

> Reflect on successes. You've solved lots of problems. Some of them were even hard problems!

Good advice. Trying to learn something new, staring at a blank page or a list of requirements that you don't understand, it's easy to get into the impostor syndrome doldrums of "this is so hard, I must just be too dumb to do it".

You see the wall, right in front of you, and you wonder how to get over it. But the fact that your path has even led you up to the wall is a strong indication that you can figure it out. If you understand the problem well enough to see just how difficult it is, you're already on your way to solving it. That doesn't mean it will be easy, of course. But possible.

I grew up when the first math circle in San Diego was being launched. Richard R. was an amazing teacher.. helped me qual for USAMO twice when I otherwise would have never had a chance.. that too when my calc bc teacher couldn’t solve many of the usamo probs himself even my linear alg Prof at the local jc couldn’t crack many of the problems.. what a great resource for kids.. recommend it to anyone whose kid has an inclination to maths

> We ask hard questions because so many of the problems worth solving in life are hard. If they were easy, someone else would have solved them before you got to them.

This is so true. And the strategies explained in the article can be adapted to deal with almost any problem in life. But you have to keep in mind that the bigger the problem, the longer it will take to solve. Some will take days, others years and even decades.

How do people (parents?) use AOPS? In terms of logistics is it like after-school math tutoring? All in-person at their campuses or is there online?

It’s mostly online, but there are also learning centers at which you can take classes. I believe the a lot of users are home school students. Many are students for whom their school’s math curriculum is too easy. AoPS is used heavily by students competing in things like the math olympiad. In addition to math, AoPS teaches two computer science courses in Python, which are roughly equal to first semester of college computer science.

The teaching is both an online lecture and reading from a textbook, as well as office hours and supplmentary videos. There is also homework, which is graded and gets long responses, of the type that usually takes the grader 10+ minutes to write.

Source: used to grade Python homework for AoPS; I should not be considered speaking for AoPS and I may be incorrect about some of this as I never was a student.

I took some AoPS classes in middle school, they were entirely online - 2 (? maybe 1 or 3?) hour online lesson once a week with weekly problem sets as well (10 questions, the last few very hard). This was almost a decade ago so things may have changed

They were doing essentially the same thing five years ago when I was taking them. Some of my later classes moved away from the weekly problem set to assigning problems on Alcumus.

No idea about other folks, but the folks I knew that did it had an after school thing.

I feel bad for never taking part, but then again it's possible I was never cut out for it.

Are you sure you weren't talking about your school's math club? Art of Problem Solving is mostly an online thing.

I bought their books and got my kids to go through them, in order, solving problems along the way. This proved to be very effective, both in my subjective opinion and based on the results of the standardized tests. Those books are head and shoulders above any school textbook I've seen in the US.

> Those books are head and shoulders above any school textbook I've seen in the US.

Most textbooks seem to like to have stupid things like "math connections to the real world" and large pictures of unrelated topics in a desperate attempt to appear relevant, all the while serving up repetitive problems that are a copy of an example so that teachers and students can just look back at them without really understanding what they're doing. Personally, I think it's really hard to use books like this in the classroom as it's structured currently because it's considered a bad thing to have problems that are essentially unsolvable for most of the class.

> it's considered a bad thing to have problems that are essentially unsolvable for most of the class.

It's really sad, for two reasons. First, most problems in most AoPS books are solvable (or at least should be) for most of the class, especially if you exclude problems marked with asterisks. They're not that different from old Soviet or Polish math textbooks, and pretty much everyone was supposed to be able to solve that.

Second, having only problems that everyone in the class can solve means that nobody in the class advances much. You can't learn to run 5k by walking 5k.

> if you exclude problems marked with asterisks

Those are the problems I'm talking about ;)

'how to solve it' by george-pólya is also on the same lines, and _really_ very good.

While i agree with most of them, i would strongly recommend against “Work backwards”. While this has helped me initially in mathematics, it took extreme effort to get rid of this habit.

Explain more why this is bad. I think it's very useful. In school, I used to say I reverse engineered a problem by finding way back from solution to the problem. Solving a problem from both ends is a reasonable way to get new ideas.

I actually used this very technique to go from struggling in undergraduate math to top 8% of my class in less than two semesters. Peeking at the answers is fine as long as you aren't "cheating" -- you just have to put in the effort to fully understand the processes and then practice applying them on your own with other completely unfamiliar problems.

Just curious, why is this such a bad habit?

And if nothing else works, try the Feynman Algorithm to solve really hard problems. :-)

Step 1: Be Feynman

Hacker New paydirt. There's good stuff in this one.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact