Thursday, December 29, 2016

Yesterday we were discussing the paper by Papadimitriou  - Algorithms, Games and Internet. and we started with Nash equilibrium  which essentially says that we cannot predict if we consider the decisions by the participants in isolation and instead that decision making must be studied by taking into account the decision-makings of others.  The decision making is expressed in terms of a probability distribution over possible actions by each player. A classic example of a game showing Nash equilibrium is prisoner's dilemma. This game is meant to show that two completely rational individuals might not cooperate, even if it appears that it is in their best interest to do so. The equilibrium is a state from where payoffs could be only worse by changing strategies. In the case of prisoner's dilemma, the mutual defection was a state of equilibrium.
It is said that there exists a Nash equilibrium when the set of strategies form a convex set. A convex set is one where we have a distribution of strategies such that their weights or probabilities are all positive and add up to one. In geometry a convex set is as a linear combination of points in real vector space where all the coefficients are non-negative and sum to 1. As an example, a convex combination of two points lies on the line segments between the points. This is exactly what we solve with linear programming. Consequently finding Nash equilibrium translates to solving linear programming. We have seen earlier how a simplex algorithm can be used to solve linear programming. The complexity of the Nash algorithm can therefore be considered similar to solving the linear equations.

#codingexercise
Yesterday we were discussing comparing top left corners of rectangles
A simple compareTo operation can be as follows:
    public int CompareTo(Object obj) {
        if (obj == null) return 1;
        var other = obj as Tuple<int,int>;
        if (other != null)
        {
             if (other.first < this.first && other.second < this.second) return -1;
             if (other.first == this.first && other.second == this.second) return 0;
             return 1;

        }
        else
           throw new ArgumentException("Object is not a Tuple<int,int>");
    }

No comments:

Post a Comment