KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Short version: I am interested in some Clojure code which will allow me to specify the transformations of x (e.g. permutations, rotations) under which the value of a function f(x) is invariant, so that I can efficiently generate a sequence of x's that satisfy r = f(x). Is there some development in computer algebra for Clojure? For (a trivial) example (defn #^{:domain #{3 4 7} :range #{0,1,2} :invariance-group :full} f [x] (- x x)) I could call (preimage f #{0}) and it would efficiently return #{3 4 7}. Naturally, it would also be able to annotate the codomain correctly. Any suggestions? Longer version: I have a specific problem that makes me interested in finding out about development of computer algebra for Clojure. Can anyone point me to such a project? My specific problem involves finding all the combinations of words that satisfy F(x) = r, where F is a ranking function and r a positive integer. In my particular case f can be computed as a sum F(x) = f(x[0]) + f(x[1]) + ... f(x[N-1]) Furthermore I have a set of disjoint sets S = {s_i}, such that f(a)=f(b) for a,b in s, s in S. So a strategy to generate all x such that F(x) = r should rely on this factorization of F and the invariance of f under each s_i. In words, I compute all permutations of sites containing elements of S that sum to r and compose them with all combinations of the elements in each s_i. This is done quite sloppily in the following: (use 'clojure.contrib.combinatorics) (use 'clojure.contrib.seq-utils) (defn expand-counter [c] (flatten (for [m c] (let [x (m 0) y (m 1)] (repeat y x))))) (defn partition-by-rank-sum [A N f r] (let [M (group-by f A) image-A (set (keys M)) ;integer-partition computes restricted integer partitions, ;returning a multiset as key value pairs rank-partitions (integer-partition r (disj image-A 0)) ] (apply concat (for [part rank-partiti
Tags (comma-separated)
Save Edits
Cancel