Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I have a N person game where each person has a set of M discrete strategies. I know from the theory that at least one mixed strategy Nash Equilibrium exists.
Can someone please tell me how do I find one of those equilibrium points by numerical simulation?
I can not find in the book any explanation of how to simulate. I just need the basic direction.
I asked this question in math.stackexchange but decided to ask here as well in case this is the correct place for algorithms.
Thank you.
It depends of the game you have, in some case it is not possible and in other (2xN zero-sum games, potential game) it can be costly.
If the game has a pure Nash Equilibrium then the Fictitious play algorithm of Brown then then improved by Berger can find it [G. W. Brown, Iterative solution of games by fictitious play, MIT Press, 1998 and Berger, Brown's original fictitious play, Journal of Economic Theory, 2007]. A stichastic version of it has been proposed by Smyrnakis & Leslie [Michail Smyrnakis et David Leslie, Stochastic Fictitious Play using Particle Filters to update the beliefs of opponents strategies, 2008]. You can browse the wikipedia page at first : http://en.wikipedia.org/wiki/Fictitious_play.
If you are looking for a mixed NE it is even more tricky and some learning algorithm can be quite bad while others are better. I personnally like the book of Cesa-Bianchi and Lugosi, Prediction, Learning and Games, http://homes.di.unimi.it/~cesabian/predbook/. Other people like also Nisan's Algorithmic Game Theory.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 8 years ago.
Improve this question
We have a user, with a music library of 100 songs. Out of those he loves 20, he hates 10 and there are 5 he neither hates nor loves. He never listened to the remaining 65.
Question: What kind of algorithm(s) is/are used to scan the remaining 65 songs and find out music the user will like?
Do some research on a product called MusicIP, it had some very clever algorithm fingerprinting technology. It converted the track to WAV and then created a fingerprint, then some clever magic to match songs that were similar.
To suggest new unfamiliar content to a user, the general approach is to use machine learning, specifically collaborative filtering, which is often used for recommender systems. The idea is to use the knowledge of the crowd, and finds people (or groups) that have similar taste to yours, and recommend new items that they tend to like.
An alternative is creating a classification algorithm for like/dislike, but that might require extracting features from each song that will describe the essense of the problem, and that's usually not trivial at all.
Some classification algorithms you might want to try are SVM, Naive Bayes, neural networks, Decision trees and more. The real challenge, as I mentioned would be to find the right features for the problem.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I want to improve my programming skills, when I participate in some programming competition I feel that every challenge is so tough that i can not solve it,I have good knowledge of coding but I fell to decide the algorithm needed to solve particular problem for that can anyone tell me which books to read
I would suggest first to get comfortable with programming language of your choice. Once you have confidence on your language and Data structure, you can proceed confidently for any programming challenges. Make a habit of writing complete code with all edge cases handled on a sheet of paper rather than simple pseudo code for your practice session.
Now to solve algorithmic problem first to grasp elementary algo functioning via book or online resources. If you are using coreman (good book for algo) then you might want to understand basic concepts of different sorting techniques, heap, queue, hashing, greedy and dynamic algorithm. For some topic i would recommend to research online as well - like dynamic programming and hashing. Almost 70-80% interview questions are either hashing or DP based. Then look for major examples and their solution for these algorithm. Once your mind will set up you would be able to think quickly for any algorithmic problem.
Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest , Clifford Stein is a good one to start with.
Covers almost everything, from graph theory to geometric algorithms and all related data structures, furthermore they use the commonly used "Big O" notation to indicate the efficiency of the algorithms explained. Most of the time multiple algorithms are presented for the same problem, together with their advantages and disadvantages.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I'm currently working on a recommendation system that uses collaborative filtering. And now I'm researching for a good/efficient algorithm that is geared towards movie recommendation. I'm confused because there are many algorithm like the Pearson Correlation Coefficient. And so I don't know what to use/implement.
Can you give me a good/efficient algorithm? or a site that gives a good example or simulation to the algorithm?
Thanks for the help!
Give this paper about the netflix prize a read Netflix Prize. Usually the 'state of the art' is some variant of matrix factorisation such as OrdRec. Check out the Funk Blog FunkSVD which will give you a nice simple explanation about implementing the starts of a matrix factorization technique for CF.
Matrix factorisation (An example in Python) is a good starting point. Furthermore, I'd recommend Ed Chen's Blog and The Mining of Massive Datasets as good introductions to the variety of methods used to solve this type of problem. The interesting thing for me having worked with this type of data is the amount of sparseness, there are of course practical limits, papers by Emmanual Candes seem to shed light on this area, excellent advanced work.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I've been asked to recommend a resource (on-line, book or tutorial) to learn Algorithms (in the sense of of the MIT Intro to Algorithms) for non-CS or Math majors. Obviously the MIT book is way too involved and some of the lighter treatments (like OReilly's Algorithms in a Nutshell) still seem as if you would need to have some background in algorithmic analysis. Is there resource that presents the material in a way that developers who do not have a background in theoretical computer science will find useful?
I think the best way to learn algorithms are through the various competition sites.
USACO - my personal favorite, as it gives a clear path through the material
TopCoder - already mentioned
Sphere Online Judge - great if you want to work in another language other than C/C++/Java
As far as books, the best single intro I've seen for the non-math specialist is Data Structures and Algorithms. It takes you through an algorithm line by line and shows you how it decomposes mathematically, something CLRS's otherwise excellent analysis section is a little less clear on.
Skiena's Algorithm Design Manual is also excellent, as is his Programming Challenges, which is essentially a tutorial through the Valladolid Online Judge.
Honestly, though, I think the single most helpful thing a beginner can do is to implement the various algorithms -- merge sort, say, followed by Quicksort -- and time them against variously sized inputs. Create a spreadsheet with a graph that shows their growth over time. Very few non-specialists will have the patience or the know-how to set up a recurrence relation and solve their way through it. But you must understand the effect of, say O n^2 growth over time, and there's no better way to learn this than to watch your own program blow through its memory stack. :)
I say this as a non-CS, non-math programmer who has spent a good couple of months wrapping my mind around algorithmic analysis.
I'd go for the Algorithm Design Manual, by Steven Skiena. It's very readable and starts with the basics in an easy-to-understand way. For example, it explains big-O notation very well. The emphasis is on practical application, which is a big bonus for beginners coming from a non-theoretical field.
The second half of the book is a reference of common algorithm problems and practical approaches to their solutions. I found it invaluable as a learning aid, and now as a reference.
I'm not sure which MIT book you're referring to, but the canonical text is CLRS. I don't think it really assumes any background besides high school math.
Personally, I found doing TopCoder algorithm competitions over the course of the past few years to be the best way for me to learn common algorithms and put them into practice. Perhaps you should try the same. Whatever you do, I suggest that you spend a lot more hands-on-keyboard time implementing things you learn than head-in-book time, because that's the way to really internalize different techniques.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I would like to learn about games (strategy) algorithms especially about how do
enemies algorithms works ?
Is there any good place for beginners?
There are many aspects for AI in strategy games, but keep in mind that there is a big difference between Realistic AI and AI that makes a game fun to play. Cheat where you can while not making it obvious to the player that the enemy is cheating.
AI Game Programming Wisdom books
http://www.aiwisdom.com/
AI Game Programming Wisdom
AI Game Programming Wisdom 2
AI Game Programming Wisdom 3
AI Game Programming Wisdom 4
Also gamedev.net has a huge collection on AI articles and a good forum with lots of information. (http://www.gamedev.net)
Game Programming Gems feature a section on AI as well, but when AI is what you want, go with the AI Game Programming Wisdom books.
Here is an overview on RTS specific articles: http://www.aiwisdom.com/ai_genrerts.html
Also look at Pathfinding, possibly some neural networks / genetic algorithms when you want to play with that, although it might be a bit overkill when you're just starting out.
Firstly you need to learn about AI. Secondly it comes down to designing an algorithm that has the computer compete against a human player (it has goals and actions to complete the goals)
This may be a good start.
Wow, that's quite the question.
I'd start with the O'Reilly book, 'AI for Game Developers'.
Also explore the Game Programming section on Amazon.com. There's a lot out there on strategic computation, game theory, random responses, etc.
For beginners, I'd really recommend Mat Buckland's Programming Game AI by Example
It is very easy to follow and I've found that it provides an excellent starting point for Games AI.
However, as the posters above have previously said, the field of game AI is incredibly broad and more and more academic AI techniques are being introduced as the hardware advances. The AI Game Programming Wisdom books are very, very good, detailing techniques from various real world examples.
For beginners Udacity is a great place to start. It provides many on-line courses for free. The Algorithms and Introduction to AI courses may be particularly useful in this case.
Once you have a basic understanding of algorithms and AI you can move to more advanced resources.