Differences between revisions 33 and 34
Revision 33 as of 2011-05-06 17:48:47
Size: 6802
Editor: ChrisBerg
Comment:
Revision 34 as of 2011-05-06 17:49:39
Size: 1012
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Sage Days 30 Best First Contribution Prize =

To participate, please post here your code, or add a link to the trac ticket

* <a href="http://trac.sagemath.org/sage_trac/ticket/11290">k-Schur functions in non-commutative variables</a>
* ...

* ...

* ...

= Sage Days 30 Coding Sprint Projects =

<<TableOfContents>>


'''For the main SD 30 wiki page go [[days30|here]]'''

Below a list of proposed projects.

== Combinatorics ==

* Implement the full collection of d-complete posets and slant product of d-complete posets, and jeu de taquin for them. Implement jeu de taquin for increasing tableaux (for d-complete posets or something less general). For background, see
[[http://www.springerlink.com.proxy.hil.unb.ca/content/j48700v65753066w/|this paper]].

  (Hugh, Eric, Ryan, JP, Calin, Josh, Gaelan, Francis, Florent)

* Student project: iterator over LR-tableaux of fixed shape, as in Anders's talk (Hugh)

* Student project: implement double Schubert and double Grothendieck polynomials (Hugh)

* Finalize posets

  Christian, Franco, Nicolas, Neil, Carolina

* Set factories

  Jason, Florent, Travis, Nicolas, Anne, Franco

* Finalize Mike's permutation group patches

  Rob, Nicolas

* Get the reflection groups / Coxeter groups into a proper state

  Christian, (Nicolas, Anne ?)

* Implementation of energy function of crystals (suitable for an interested student!!!)

  Anne, Travis

* Implementation of cyclic tableaux

  Anne

* Quotient rings of rings of symmetric functions, examples of noncommutative Schur functions, etc.

  Jason, Anne, Chris

* Actions on combinatorial free modules

  Hugh, Anne, Franco, Nicolas, Florent, Chris

* Implementation of bijection between crystal paths and rigged configurations

   Travis, Anne

* Polyhedral representation of symmetries

  Aaron

* Partitions related to k-Schur functions

  Carolina, Jason

* (Something with poset partitions?)

  Holly

== Number Theory ==

* Update IntegerVectors internal representation in Sage [l^p^ norms: norm(p='sage.rings.integer.Integer(2)')].

  Eva, Nicolas, Florent, Jordi

  Goal: Want to be able to enumerate n-tuples with l^p^ norm less than a given value.

  INPUT: n = dimension, p = norm to use, s = max size of l^p^ norm for vectors.

  OUTPUT: enumeration of vectors in ZZ^n^ (or n-tuples) with l^p^ norm <= s.


  > Related stuff already in sage:

    - cartesian_product_iterator (in sage.misc.mrange) enumerates n-tuples with entries in given lists (given per entry), so can be used to enumerate vectors in ZZ^n^ with l^infinity^ norm <= s

    - Composition (in sage.combinat.composition) enumerates all vectors of length between 1 and n with nonnegative integer entries with l^1^ norm <= s for a given value of s; relies on IntegerVectors?

    - norm in class sage.modules.free_module_element returns the l^p^ norm of a vector in ZZ^n^ for given n and p >= 1, including p = infinity (p='sage.rings.integer.Integer(2)'), (p=2 is default)

* Update routines for enumerating lattice points in a polytope to help me find digit sets:

  -> One possible route: allow half-open polytopes, that include certain faces and exclude others

  -> Another possible route: allow vertices to be non-lattice points, so that I can shrink my polytope (which is a nice parallelopiped) by epsilon on the faces that I want to exclude


* Student project: Generate centered digit set for multidimensional radix representation

  Input: a dilation matrix A (nxn integer matrix, all of whose eigenvalues have modulus > 1). Output: a centered digit set D = {d_1, ..., d_r}; here r = |det A|. The centered digit set is a complete set of coset representatives of Z^n^/A(Z^n^), chosen to be the integer vectors contained in the set/polytope A((-1/2,1/2]^n^).

  Josh

* Student project: Generate minimum modulus digit set for multidimensional radix representation

  Input: a dilation matrix A. Output: a digit set D = {d_1, ..., d_r} consisting of the representatives of each coset of Z^n^/A(Z^n^) with minimum l^2^ norm.

  - Method 1: Use algorithm for centered digit set D_0 to find an initial set of coset representatives. Find the smallest l^2^ norm of any k in Z^n^ that is not in the initial digit set D_0. Search vectors k in Z^n^ of expanding l^2^ norm: check the l^2^ norm of the current representative for the coset that k is in, and replace that representative with k (in the digit list/set D) if k has smaller norm. Note that this is a finite search.

  - Method 2: Use LLL algorithm to find minimal basis for lattice A(Z^n^). Then take D to be the set of Z^n^ lattice points (integer vectors) in the set/polytope A((-e_1/2,e_1/2] x ... x (-e_n/2,e_n/2]), where e_1, ..., e_n are the LLL basis vectors for A(Z^n^).

* Student project: Visualizing attractors of iterated function systems and other fractal sets

  Review/search for graphics packages that are currently usable by Sage, as well as other open-source options for drawing fractals that are available. Find the best one for visualizing fractals, specifically fractals arising from [[https://secure.wikimedia.org/wikipedia/en/wiki/Iterated_function_system|iterated function systems]], specifically iterated functions systems arising from multidimensional radix representations (sums of terms of the form A^n^ d_n, where A is an nxn integer matrix all of whose eigenvalues have modulus > 1, and the d_n are "digit" vectors drawn from a complete set of coset representatives of Z^n^/A(Z^n^); for each digit d, we can define a function f_d = A^-1^(x+d)). Good qualities in a graphics package include: ability to generate images from batches of examples automatically generated in Sage, ability to focus on areas of interest in the image and zoom in, ability to display both 2D and 3D images, and ability to rotate 3D images for different views.

  (Franco to advise)

* Potentially suitable as student project?: Implement Scheicher & Thuswaldner neighbor-finding algorithm

  Input: a dilation matrix A (nxn integer matrix, all of whose eigenvalues have modulus > 1) and digit set D = {d_1, ..., d_r} (set of integer vectors that comprise a complete set of coset representatives of Z^n^/A(Z^n^); here r = |det A|). Output: a list of integer vectors that give the neighbor translates of T(A,D), the set of "decimals" under the multidimensional radix representation with base A and digit set D. See [[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.141.4331&rep=rep1&type=pdf|Scheicher and Thuswaldner's paper]].

== Documentation ==

* Discussion thematic tutorials

  Jason, Anne, Franco, Rob, Nicolas, Florent, Jeff

* ``Introduction to Sage'' book

  Hugh, Rob, Nicolas, Jeff
def quantum_grassmannian_poset(p,m,k):
    p=Partition(p)
    D=DiGraph()
    D.add_vertex(p)
    queue=[p]
    seen={p:0}
    while queue:
        p=queue.pop()
        if seen[p]==m+k-1:
            continue
        if p==[]:
            up_list=[Partition([1])]
        else:
            up_list=p.up_list()
        for q in up_list:
            s=SkewPartition([q,p])
            r=s.cells()
            u=[q.content(*t)+k%(m+k) for t in r]
            new_edge=False
            if q.arm_length(0,0) <= m-1 and q.length() <= k:
                new_edge=True
            if q.arm_length(0,0) == m-1 and q.length() == k+1:
                new_edge=True
                cells = q.rim()
                for c in cells:
                    q = q.remove_cell(c[0])
            if new_edge is True:
                D.add_edge(p,q,u[0])
                if q not in seen:
                    seen[q]=seen[p]+1
                    queue.append(q)
    return D

def quantum_grassmannian_poset(p,m,k):

  • p=Partition(p)

    D=DiGraph() D.add_vertex(p) queue=[p] seen={p:0} while queue:

    • p=queue.pop() if seen[p]==m+k-1:
      • continue
      if p==[]:
      • up_list=[Partition([1])]
      else:
      • up_list=p.up_list()
      for q in up_list:
      • s=SkewPartition([q,p]) r=s.cells() u=[q.content(*t)+k%(m+k) for t in r] new_edge=False if q.arm_length(0,0) <= m-1 and q.length() <= k:

        • new_edge=True
        if q.arm_length(0,0) == m-1 and q.length() == k+1:
        • new_edge=True cells = q.rim() for c in cells:
          • q = q.remove_cell(c[0])
        if new_edge is True:
        • D.add_edge(p,q,u[0]) if q not in seen:
          • seen[q]=seen[p]+1 queue.append(q)
    return D

days30_projects (last edited 2012-05-03 16:29:14 by saliola)