How to develop an algorithm that solves a complex problem? Many believe that for this you need to “experience insight,” that this process is not entirely rational and depends on creative power or talent.
In fact, the solution of any problem is reduced to the collection of information about the observed object. Moreover, this principle is applicable both to solve the most complex research problems and to solve applied problems. The work of the inventor resembles not so much the work of a wizard, as the discoverer's journey through uncharted territory. The main quality of a good inventor is the ability to collect information.
If you want to solve a complex problem, collect information in a variety of ways. By answering the following 20 questions, you can easily build a work plan for the task.
Question number 1. Who!Starting to solve a specific task, make the longest list of people who are directly related to its solution. Find out:
- who is primarily interested in its solution?
- who was already engaged in solving this or related problem?
- who determines if the problem is well solved or bad?
- who can be consulted in the course of solving the problem?
- who can check the solution?
- who is the author of articles in this area?
')
Question number 2. For what?Ask yourself several times: “Why do I want to solve this problem? What is it for? ”Often it turns out that solving Problem A is necessary in order to solve Problem B, but at the same time Problem B can be solved in another way. In this case, starting to think about the original task A, we only lose time.
Question number 3. How?What methods will I use to solve this problem? How will the process of solving it be structured? Are there ready methodologies that can be used?
Question number 4. What?What objects are present or implied in this task? Draw them on paper and mark with arrows all kinds of relationships between them associated with this task. Are there any unaccounted or extra objects?
Each object should come in and approximately the same number of arrows should proceed from each object. Otherwise, as a rule, we either miss important connections between objects, or attach unreasonably great importance to some connections.
Question number 5. When?Look at the task in terms of time. Find out:
- how fast should the individual blocks of the algorithm work?
- what external factors related to time can affect their work?
- how much time do you have for the development, programming and testing of the algorithm?
Question number 6. Where?Look at the task from a geographic point of view. Answer the questions:
- where, in which countries, cities, districts will your decision be used?
- on what computer platforms will it work?
- what other issues related to location and geography are relevant to this task?
Question number 7. What was that ?
What solutions of this problem existed a year, two, ten, a hundred years ago? No task arises from scratch - most likely, people have already dealt with this problem in the past. It is interesting and useful to find out exactly how this happened.
Question number 8. What is?What solutions to this problem exist and are used today? Find out and achieve a clear understanding of the alternative solutions that are available now.
Question number 9. What will happen?How will people solve this problem in three, five, ten, a hundred years? Define this trend at least approximately, think about this topic, fantasize.
It is great if the algorithm you are working on is part of a long-term trend, and will not become obsolete morally one year after its implementation.
Question number 10. Part of what is?Part of which larger task (or system) is this task? And what is this larger system part of?
Question number 11. What is it made of?What smaller subtasks are part of the original task? What parts can the original task be split into? And what smaller parts can subtasks be broken into?
Question number 12. What is it like?What does this task look like? In this case, associations can be arbitrarily long and metaphorical, and this is even good. Fine, if you find a similar phenomenon in a completely different area of human activity.
This is a very powerful question. It is on the analogies between completely unexpected areas of knowledge that the most beautiful and harmonious solutions are found.
Question number 13. What do I see?Visualize the problem, its solution and all its components. Draw them. Be a child (or designer), find the most appropriate colors (even for virtual, abstract objects). Feel the visual harmony of this task or find “ugly”, problematic places, if any.
Question number 14. What do you hear?This is a very complicated and useful question, because the most powerful part of the brain, which is responsible for processing audio information, is underdeveloped in most modern people. At the same time, I know brilliant scientists and engineers who “hear” the solution of a particular task.
So, try to “hear” the interaction of all the elements of the task (for this purpose it is convenient to close your eyes), to hear the characteristic sounds of its elements. Hear conversations and timbres of voices of people who apply the solution to your problem in practice.
Question number 15. What do I feel?This question may also seem unusual, although not to the same extent as the previous one. Feel tactile, temperature, taste, respiratory associations caused by this task. Some solutions may seem "strong", while others may be "cold" or even "bitter."
Connect the part of your brain that is responsible for the sensations to the analysis of the problem. Of course, this is a non-standard way of analyzing scientific information, but it can also be useful.
Question number 16. What could be the perfect solution?Imagine how to solve this problem ideally; think of something absolutely unbelievable - the more incredible, the better. This principle is based on the brainstorming method, when any, even the most unexpected, solutions are proposed.
Imagine that you have no boundaries, and the working conditions are most favorable. What could you do in this situation?
How could the solution to this problem be made absolutely magnificent?
Question number 17. Why all fail?Stay peevish and pessimistic critic. Find all the reasons for which you can not solve this problem; as well as all organizational problems that will lead to the failure of this project. Write them down carefully - the more the better.
When you leave the state of criticism, the recorded will become invaluable information about the dangers that await you in the way of solving the problem, and which should be avoided.
Question number 18. What is the use for me?What benefits will you personally derive from solving this problem? What will you learn? How much do you earn? What important contacts and contacts will you get? How to improve your reputation?
Question number 19. What is the use for others?What kind of benefits will the customer, the client, the person who will use the results of your work get from solving this task? Does the solution to your problem matter to him?
Question number 20. What is the benefit for society?How will the solution of your problem affect the whole society in which we live? Will it be socially significant? How and how will it help all of humanity as a whole?
I am sure that by answering all these questions, you will learn much more about the task that you are facing. And, almost certainly, you will see this task from the most unexpected sides - and your imagination itself will tell you unusual, reliable, beautiful and harmonious ways to solve it.
Of course, the answers to these questions do not always lead to a final decision. There are many other ways, methods that help find an elegant solution to a complex problem.
Nevertheless, I am sure that you will significantly improve your speed and quality of solving algorithmic problems if you use these 20 basic questions in your research and engineering activities.
The original article is here.
gil-algorithms.com/articles/20_questions_on_generating_an_algorithm.html