simplifying a simplicial set

The starting point to this question is a simplicial set with a large number of simplices. Sage is still computing exactly how many, but in dimension 4 there are more than 100,000 simplices. Is there a command similar to X.shrink_simplicial_complex(K), but for which the input is already a simplicial set? I am fairly certain this simplicial set description of a cell complex can be described much, much more efficiently. I would like to be able to compute homology and cohomology, but my guess is that this won't be feasible unless I can first simplify.

edit retag close merge delete

Sort by » oldest newest most voted

The reduce method is the only one available, and that just collapses a spanning tree to a point, so it only affects 0- and 1-simplices. Maybe the optional Sage package kenzoand its simplicial set implementation provides something; see https://doc.sagemath.org/html/en/refe....

more

You could try to reproduce shrink_simplicial_complex by hand: try to identify a large contractible subcomplex and then take the quotient. How you identify that subcomplex will depend on the simplicial set you're working with.

( 2021-04-04 00:55:29 +0200 )edit

Thanks very much for your help! My problem is with the large number of 4- and 5- dimensional simplices; there are not nearly so many lower dimensional simplices. Suppose I added extra vertices to get a simplicial complex. If I took a dual, is there some way of getting around the fact that the resulting "polytopal complex" isn't implemented yet in sage? I would want to find a maximal spanning tree in the dual, and collapse that. One way or the other, I can reduce the number of simplices by some multiplicative factor. Do you have an estimate of the maximal size of a simplicial set for which sage can realistically compute homology and cohomology? I could imagine allowing the computer to run for months, but not years. Would it help to calculate in Fp, and take limits?

( 2021-04-04 07:08:59 +0200 )edit

Computations over a field (Q or Fp) will be faster than over Z, but I don't know if it will be enough to make a difference. Can you try with some smaller examples to see how long the computations actually take? I tried with a simplicial set with f-vector [1, 0, 11, 166, 1621, 9000, 29175, 56070, 62790, 37800, 9450], and it took about 2 minutes to compute the mod 2 homology. Rational homology takes longer, and presumably integral homology even longer, but I haven't gotten to that yet.

( 2021-04-05 00:16:56 +0200 )edit

Warning: it took over 90 minutes with rational coefficients. Finite fields seem to be much faster: under 2 minutes for fields of size 2, 3, 17, 137.

( 2021-04-05 04:18:24 +0200 )edit

I am relieved, that sounds much faster than I had expected!! I am fixing up an error I make labelling and enumerating simplices. Once that is sorted I will be able to experiment. Updating the dictionary that defines the simplicial set might be what takes longest. When computing in Q or Z, did you get any bogus terms due to rounding errors?

( 2021-04-05 07:54:18 +0200 )edit