Loading [MathJax]/jax/output/HTML-CSS/jax.js
Ask Your Question
0

How can I get Sage to go over all possible maps between two sets?

asked 9 years ago

phoenix gravatar image

updated 9 years ago

What I want to do is this : Say I take a graph Kn,n and choose an ordering for each edge arbitrarily - say denote each edge as (i,j) where i is in the left partition and j is in the right partition. I have a set of matrices A=A1,A2,...,Ak. I want to iterate over all possible ways in which one could have assigned an A matrix to an edge of this graph.

  • How does one do that? (..apart from writing a massive sequence of nested loops!..)
Preview: (hide)

1 Answer

Sort by » oldest newest most voted
0

answered 9 years ago

Nathann gravatar image

To list all functions from A to B you must iterate on all points of B^|A|. This can be achieved with itertools' 'product' function:

def all_functions(A,B):
    from itertools import product
    B_to_the_A = product(B,repeat=len(A))
    for p in B_to_the_A:
        yield dict(zip(A,p))

sage: for f in all_functions("abc",[0,1]):
....:     print f
{'a': 0, 'c': 0, 'b': 0}
{'a': 0, 'c': 1, 'b': 0}
{'a': 0, 'c': 0, 'b': 1}
{'a': 0, 'c': 1, 'b': 1}
{'a': 1, 'c': 0, 'b': 0}
{'a': 1, 'c': 1, 'b': 0}
{'a': 1, 'c': 0, 'b': 1}
{'a': 1, 'c': 1, 'b': 1}

Nathann

Preview: (hide)
link

Comments

Is that "repeat" a command?

phoenix gravatar imagephoenix ( 9 years ago )

Why is this slightly modified thing not working? def All_Maps(A,B): from itertools import product k = len (A) return product(B,repeat = k)

for f in All_Maps ([a,b],[0,1]): print f

phoenix gravatar imagephoenix ( 9 years ago )

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 9 years ago

Seen: 363 times

Last updated: May 03 '15