<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Michi's blog</title>
	<atom:link href="http://blog.mikael.johanssons.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mikael.johanssons.org</link>
	<description>Because my LiveJournal is too silly</description>
	<lastBuildDate>Mon, 14 May 2012 10:40:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Recursively counting numbers with fixed bit counts</title>
		<link>http://blog.mikael.johanssons.org/archive/2012/05/recursively-counting-numbers-with-fixed-bit-counts/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2012/05/recursively-counting-numbers-with-fixed-bit-counts/#comments</comments>
		<pubDate>Sun, 13 May 2012 00:04:37 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=330</guid>
		<description><![CDATA[I ran across this problem in a reddit side-bar job-ad, and was intrigued by the task (description paraphrased to decrease googleability): Write a function uint64_t bitsquares(uint64_t a, uint64_t b); such that it return the number of integers in [a,b] that have a square number of bits set to 1. Your function should run in less [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across this problem in a reddit side-bar job-ad, and was intrigued by the task (description paraphrased to decrease googleability):</p>
<blockquote><p>
Write a function<br />
<code><br />
uint64_t bitsquares(uint64_t a, uint64_t b);<br />
</code><br />
such that it return the number of integers in [a,b] that have a square number of bits set to 1. Your function should run in less than O(b-a).
</p></blockquote>
<p>I think I see how to do it in something like logarithmic time. Here&#8217;s how:</p>
<p>First off, we notice that we can list all the squares between 0 and 64: these are 0, 1, 9, 16, 25, 36, 49, and 64. The function I will propose will run through a binary tree of depth 64, shortcutting through branches whenever it can. In fact; changing implementation language completely, I wonder if I cannot even write it comprehensively in Haskell.</p>
<p>The key insight I had was that whenever you try to find the number of numbers with a bitcount matching some element of some list within the bounds of 0b0000&#8230;0000 and 0b000&#8230;01111&#8230;11, then it reduces to a simple binomial coefficient &#8212; n choose k gives the number of numbers with k bits set among the n last. Furthermore, we can reduce the total size of the problem by removing a matching prefix from the two numbers we test from.</p>
<p>Hence, we trace how many bits off the top agree between the two numbers. We count the set bits among these, subtract them from each representative in the list of squares, giving us the counts we need to hit in the remainder.</p>
<p>Write a&#8217; for a with the agreeing prefix removed, and similarly for b&#8217;. Then the total count is the count for the reduced things from a&#8217; to 0b000&#8230;01&#8230;111 plus the count for the reduced things from 0 to b&#8217;. The reduction count for b&#8217; needs to be 1 larger than the one for a&#8217; since in one case, we are working with the prefix before the varying bit increases, and in the other, we work with the prefix after the varying bit increases &#8212; the latter count is not <i>really</i> from 0 to b&#8217;, but this is a useful proxy for the count from 0b0000&#8230;010&#8230;000 to b&#8217; with the additional high bit set.</p>
<p>In code, I managed to boil this down to:<br />
<code><br />
import Data.Word<br />
import Data.Bits<br />
import Data.List (elemIndices)</p>
<p>bitsquare :: Word64 -> Word64 -> Word64bitsquare a b = bitcountin a b squares -- # integers in [a,b] with square # of 1<br />
s</p>
<p>squares = [1,4,9,16,25,36,49,64] :: [Word64]<br />
allones = [fromIntegral (2^k - 1) | k <- [1..64]]</p>
<p>choose n 0 = 1<br />
choose 0 k = 0<br />
choose n k = (choose (n-1) (k-1)) * n `div` k</p>
<p>popCount :: Word64 -> Word64<br />
popCount w = sum [1 | x <- [0..63], testBit w x]</p>
<p>-- # integers in [a,b] with 1-counts in counts<br />
bitcountin :: Word64 -> Word64 -> [Word64] -> Word64<br />
bitcountin a b counts<br />
  | a > b = 0<br />
  | a == b = if popCount b `elem` counts then 1 else 0  | (a == 0) &#038;&#038; (b `elem` allones) = sum [choose n k | n <- [popCount b], k <- c<br />
ounts]<br />
  | otherwise = (bitcountin a' low [c-lobits | c <- counts, c>= lobits]) +<br />
                (bitcountin hi b' [c-hibits | c <- counts, c>= hibits])<br />
    where<br />
      agreements = [(testBit a n) == (testBit b n) | n <- [0..63]]<br />
      agreeI = elemIndices False agreements<br />
      prefixIndex = last agreeI<br />
      prefixCount = sum [1 | x <- [prefixIndex..63], testBit a x]<br />
      a' = a .&#038;. (2^prefixIndex - 1)<br />
      b' = b .&#038;. (2^prefixIndex - 1)<br />
      low = 2^prefixIndex - 1<br />
      hi = 0<br />
      lobits = prefixCount<br />
      hibits = prefixCount+1<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2012/05/recursively-counting-numbers-with-fixed-bit-counts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ATMCS 5 in Edinburgh</title>
		<link>http://blog.mikael.johanssons.org/archive/2012/03/atmcs-5-in-edinburgh/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2012/03/atmcs-5-in-edinburgh/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 06:20:42 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Conferencing]]></category>
		<category><![CDATA[Data Analysis]]></category>
		<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=326</guid>
		<description><![CDATA[ATMCS 5 &#8211; Algebra and Topology, Methods, Computing, and Science Second Announcement This meeting will take place in the period July 2-6, at the ICMS in Edinburgh, Scotland. The theme will be applications of topological methods in various domains. Invited speakers are J.D. Boissonnat (INRIA Sophia Antipolis) (Confirmed) R. Van de Weijgaert (Groningen) (Confirmed) N. [...]]]></description>
			<content:encoded><![CDATA[<h2>ATMCS 5 &#8211; Algebra and Topology, Methods, Computing, and Science</h2>
<h3>Second Announcement </h3>
<p>This meeting will take place in the period July 2-6, at the ICMS in Edinburgh, Scotland.  The theme will be applications of topological methods<br />
in various domains.   Invited speakers are </p>
<p>J.D. Boissonnat (INRIA Sophia Antipolis) (Confirmed)<br />
R. Van de Weijgaert (Groningen) (Confirmed)<br />
N. Linial (Hebrew University, Jerusalem) (Confirmed)<br />
S. Weinberger (University of Chicago) (Confirmed)<br />
S. Smale  (City University of Hong Kong) (Confirmed)<br />
H. Edelsbrunner (IST, Austria) (Confirmed)<br />
E. Goubault (Commissariat à l’énergie atomique, Paris) (Confirmed)<br />
S. Krishnan (University of Pennsylvania) (Confirmed)<br />
M. Kahle (The Ohio State University) (Confirmed)<br />
L. Guibas (Stanford University) (Confirmed)<br />
R. Macpherson (IAS Princeton) (Tentative)<br />
A. Szymczak (Colorado School of Mines) (Confirmed)<br />
P. Skraba/ M. Vejdemo-Johansson (Ljubljana/St. Andrews) (Confirmed)<br />
Y. Mileyko (Duke University) (Confirmed)<br />
D. Cohen (Louisiana State)<br />
V. de Silva (Confirmed)<br />
There will be opportunities for contributed talks.  Titles and abstracts should be send to Gunnar Carlsson at gunnar@math.stanford.edu.  </p>
<p>The conference website is located at http://www.icms.org.uk/workshops/atmcs5.  Those interested should register there as soon as possible so that we can obtain an idea of the number of participants.  </p>
<p>For the organizing committee,</p>
<p>Gunnar Carlsson </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2012/03/atmcs-5-in-edinburgh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BibLaTeX — why haven&#8217;t I used this earlier!?</title>
		<link>http://blog.mikael.johanssons.org/archive/2012/03/biblatex-%e2%80%94-why-havent-i-used-this-earlier/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2012/03/biblatex-%e2%80%94-why-havent-i-used-this-earlier/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 16:01:53 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Communicating science]]></category>
		<category><![CDATA[LaTeX]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=322</guid>
		<description><![CDATA[As any reader of this (now rather occasional) blog might have guessed by now, I do quite a lot of writing in LaTeX. It comes with the territory — I do mathematics research, so I write in LaTeX. I do quite a bit of research, so I spend a lot of time writing up my [...]]]></description>
			<content:encoded><![CDATA[<p>As any reader of this (now rather occasional) blog might have guessed by now, I do quite a lot of writing in LaTeX. It comes with the territory — I do mathematics research, so I write in LaTeX. I do quite a bit of research, so I spend a lot of time writing up my results.</p>
<p>And I care about the tools I use. I care deeply about the way my citations come out, and I have significant aesthetic opinions on the matter. I like author-date citation styles, much better than the horrible abbreviated alphabet soups so popular in mathematics styles, and much more pleasant to read than [1,2,5-7] as seems to be a dominant style in mathematical literature. If I see (Zomorodian, 2005) or even better (Edelsbrunner-Letscher-Zomorodian, 2000) I&#8217;ll know immediately what the reference is about when I read in my own field — whereas a citation of [3] forces me to leaf back to check what they mean.</p>
<p>I have spent a long time either fiddling with natbib, or giving up entirely, or poking around various styles, never quite feeling satisfied with the solutions I ran into. Until today I finally decided to try BibLaTeX on a document I started writing.</p>
<p>And now I wonder why it took me so long to get here.</p>
<p>BibLaTeX is amazing, IMO. It is also currently VERY poorly documented in the blogosphere. The package manual exists, sure, and once you digest it is actually helpful. But when it comes to more tutorial-oriented lightweight introductions, I came up just barely with a very sketchy site from Cambridge that had a few really artificial examples.</p>
<p>So here goes: my own introduction to BibLaTeX.</p>
<h2>My first BibLaTeX document</h2>
<p>To use BibLaTeX, you can stick with the same BibTeX database you already carefully crafted. However, the way you interact with it in your document changes.</p>
<p>In your preamble, you&#8217;ll want something like<br />
<code><br />
\usepackage[citestyle=authoryear]{biblatex}<br />
\addbibresource{mybibfile.bib}<br />
</code></p>
<p>Then, where you would classically have had<br />
<code><br />
\bibliographystyle{abbrv}<br />
\bibliography{mybibfile}<br />
</code><br />
you instead use the command<br />
<code><br />
\printbibliography<br />
</code></p>
<p>So far, so good. The \cite command works just like expected, and everything seems like we make a few random small changes in how and where we write the bibliography-related components of our document. The real power here comes when you start looking at the details of what BibLaTeX provides, and how you can use it.</p>
<ol>
<li>All citation commands come in two versions. One of them will capitalize the first letter if it isn&#8217;t already so you can use them at the beginning of a sentence. Thus, there is both \cite{} and \Cite{}.</li>
<li>Even more than that, there is a host of cite commands:
<ul>
<li>\cite, \Cite: cite using the default settings of your current citestyle.</li>
<li>\parencite, \Parencite: enclose citation in parenthesis (or square brackets for numeric citation styles).</li>
<li>\footcite: put citation in a footnote.</li>
</ul>
<p>  Some styles allow other interesting citation commands as well: </p>
<ul>
<li>\textcite, \Textcite: for use when you want to refer to a citation in running text. Will print author names, and then a citation slug in brackets.</li>
<li>\smartcite, \Smartcite: gives a footnote if used in the body of the document, and a parencite if used in a footnote.</li>
<li>\cite*, \parencite*: only prints year (or title) and not author names.</li>
</ul>
</li>
<li>Speaking of styles, you&#8217;ll set those by adjusting the options to the biblatex package inclusion. citestyle=&#8230; influences how the inline citations work, and has support for author-year, author-title, with or without <em>ibid.</em> handling, with or without compactification for many citations of the same author groups. Furthermore, there is a nice and mature numeric citation style handling, with optional compacting to [1-3,8] instead of [1,3,8,2], or expansion to individual numbers with no sharing of brackets allowed. There is a couple of different author-abbreviation styles: one that mimics the [VeJ03] styles of the classic BibTeX styles, and one that compacts the author slugs as much as possible. And there are styles specifically for including full bibliography dumps at each citation and for building reading lists.
<p />
  Each such style you set will setup the styles for the bibliography at the end on its own. You can override those choices by adding bibstyle=&#8230; to the biblatex package options. These approximately match the styles for citestyle=&#8230; with less fiddling with inline appearances.</p>
<p />
  And finally, there is a lot of control over how the bibliography entries are sorted. Whether to include specific fields in the BibTeX file — including doi and url.
</li>
</ol>
<p>To pick an appropriate style, you really, really should refer to the <a href="http://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/contrib/biblatex/doc/biblatex.pdf" title="biblatex package manual">package manual</a>. Go straight (using the ToC hyperlinks) to 3.3 Standard Styles in the Users Guide section, and the style options are cleanly and clearly described for you.</p>
<h2>So, how does it turn out then?</h2>
<p>The results, let me show them to you.</p>
<p>This is all from an extended abstract I&#8217;m writing for a conference this summer. I used<br />
<code><br />
\usepackage[citestyle=authoryear-icomp,doi=true,url=true]{biblatex}<br />
\addbibresource{gts2012.bib}<br />
</code><br />
in the preamble, and both \cite and \parencite inline. </p>
<p>Inline citations came out like:<br />
<img src="https://img.skitch.com/20120307-pm74p6u6h3f1kr4bec9d4s4kq9.png" alt="biblatex-inline" /></p>
<p>And the full reference lists came out like:<br />
<img src="https://img.skitch.com/20120307-xj4tmfrtasjbi9a68p2yk8t1mm.png" alt="biblatex-reflist" /></p>
<p>I am noticing that depending on the quality of your database, there might be redundancies in the DOI and URL-enabled references — but you always have to do some cleanup of the references, and it can hardly be blamed on the software at this stage.</p>
<h2>Now what?</h2>
<p>Go and try it out yourself. Skim the <a href="http://anorien.csc.warwick.ac.uk/mirrors/CTAN/macros/latex/contrib/biblatex/doc/biblatex.pdf" title="biblatex package manual">package manual</a>. Start using it in a few documents yourself. </p>
<p>There are snags when you need to interface with memoir — the manual talks about this. Essentially it boils down to biblatex replacing memoir as far as bibliography styling goes. Other than that, so far, I am only happy with discovering this piece of LaTeX authoring support.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2012/03/biblatex-%e2%80%94-why-havent-i-used-this-earlier/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Collaborative tools</title>
		<link>http://blog.mikael.johanssons.org/archive/2012/02/collaborative-tools/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2012/02/collaborative-tools/#comments</comments>
		<pubDate>Fri, 17 Feb 2012 21:57:45 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Communicating science]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=318</guid>
		<description><![CDATA[I do quite a bit of collaboration. In fact, since after my PhD research, I have written exactly one preprint that does NOT spring from a collaboration. And there is quite a bit of technological support that flows into a good collaboration of mine. Here are some of the tools I uses and some of [...]]]></description>
			<content:encoded><![CDATA[<p>I do quite a bit of collaboration. In fact, since after my PhD research, I have written exactly one preprint that does NOT spring from a collaboration. And there is quite a bit of technological support that flows into a good collaboration of mine. Here are some of the tools I uses and some of the thoughts I have on them.</p>
<h2>Version control</h2>
<p>Since I work in mathematics (and, arguably, in the fringes of Theory CS), everything I write is written in LaTeX. This is for one thing <em>very</em> helpful, since it means that the actual texts we collaborate on are plain text with markup. Eminently suitable for the toolkit provided by the software community.</p>
<p>As such, I make it a fundamental point to ALWAYS use version control software with my writing projects. Regardless of whether I do it for just myself, or in a team with collaborator, everything is under version control. If my collaborators do not yet know any such systems, I teach them <em><a href="http://mercurial.selenic.com" title="Mercurial">Mercurial</a></em>, my own personal favourite. This has varied success — if my collaborators absolutely refuse, I&#8217;ll maintain the version control interactions myself, but I have had some collaborations where my partner is enthusiastic enough to subsequently teach everyone HE works with to do the same.</p>
<p>Lately, I have also started looking into <em><a href="git-scm.com/" title="Git">Git</a></em> as well — mainly because of the existence of <a href="http://github.com">github</a>, but also because of systems such as <a href="https://github.com/sitaramc/gitolite" title="Gitolite">Gitolite</a>. These put a web-layer and an easy to use admin layer on top of the source code repository, making it easy to create or modify workgroups and remove almost all the hassle of administering a server yourself to facilitate the collaboration with these tools. </p>
<h2>Communication in larger groups</h2>
<p>As long as a collaboration is with one or two collaborators, I usually do well enough just typing their names into my email client any time I want to say anything, and I definitely make sure to create a new mailbox folder any time a clear project materializes. However, some of the things I work on materialize in larger groups forming the generic collaboration, and subgroups crystalizing for any particular part.</p>
<p>For these cases, I find a mailing list to be invaluable. Preferably with archiving, so you can send out ideas to the list, and rely both on getting feedback on the — often early and unrefined — ideas, and a searchable cache where you can go back and figure out what the ideas were in the first place. Since I do a lot of my email maintenance on Google anyway, the bigger projects I am in have gotten mailing lists setup that way too — using the very pleasant Google Groups interface to administer and handle the mailing lists.</p>
<p>Wikis, too, are a really nice and productive idea — I haven&#8217;t done anything with them myself for running collaborations, but my current workgroup uses a wiki to discuss software design issues.</p>
<p>For quicker turn-around and lower formality than email, I have had very good success with some of my collaborators chatting on Skype or on GTalk about our problems. This requires everyone to be comfortable enough with the text chat as a medium, but can be surprisingly productive.</p>
<h2>Meetings with geographic diversity</h2>
<p>And then, every so often, you just have to meet up and talk.</p>
<p>Best, of course, is if you happen to get together geographically anyway — so that you can occupy a seminar room and go wild on a blackboard, hashing out any details you need to deal with. This strains everybody&#8217;s travel budgets, and eats time in masses, so it is not always feasible.</p>
<p>Next best thing is a video and voice chat, preferably with a whiteboard or at least screen sharing functionality. Good thing is there are a few of these around.</p>
<p><a href="http://skype.com">Skype</a> is a tool I&#8217;ve used a few times for this. It has video, voice, and screen sharing in the later versions, and is really easy to get up and running and to deal with. The biggest drawback I see with Skype is that you&#8217;ll have to pay to get video conferencing and not just video chat, which is a genuine drawback as soon as people are distributed on more than two sites. If there are only two places involved, however, few things are as painless as kicking up a Skype session.</p>
<p>The other tool I&#8217;ve used lately is Google+. A lot can be said about this foray into the Social Web, but the part I want to highlight here is the hangout feature. A G+ hangout is a video conference for up to 10 participants. Everyone (who chooses to) streams video, or their own screen if they want to, and in the client you either roam to whoever makes the most noise (hopefully the person speaking at the moment), or you can lock your view to one of the feeds. This combined with tablet software like Microsoft Journal, or even just a paint application is enough to get a whiteboard up and running. I have yet to find a good collaborative whiteboard (though Google Docs and their drawing app probably does a good job), but as long as only one person needs to hold the pen, this solution is marvelously smooth.</p>
<p>These are my collaboration tools. What are yours?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2012/02/collaborative-tools/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A quick python hack for a mathematical puzzle</title>
		<link>http://blog.mikael.johanssons.org/archive/2011/11/a-quick-python-hack-for-a-mathematical-puzzle/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2011/11/a-quick-python-hack-for-a-mathematical-puzzle/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 15:09:36 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[mathematics puzzle]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=314</guid>
		<description><![CDATA[So, today I saw this in my Twitter feed: «Phil Harvey wants us to partition {1,…,16} into two sets of equal size so each subset has the same sum, sum of squares and sum of cubes.» &#8212; posted by @MathsJam and retweeted @haggismaths. Sounds implausible was my first though. My second thought was that there [...]]]></description>
			<content:encoded><![CDATA[<p>So, today I saw this in my Twitter feed:</p>
<blockquote><p>«Phil Harvey wants us to partition {1,…,16} into two sets of equal size so each subset has the same sum, sum of squares and sum of cubes.» &#8212; posted by @MathsJam and retweeted @haggismaths.
</p></blockquote>
<p>Sounds implausible was my first though. My second thought was that there aren&#8217;t actually ALL that many of those: we can actually test this.</p>
<p>So, here&#8217;s a short collection of python lines to _do_ that testing.</p>
<p><code>import itertools<br />
allIdx = range(1,17)<br />
sets = itertools.combinations(allIdx,8)<br />
setpairs = [(list(s), [i for i in allIdx if i not in s]) for s in sets]<br />
def f((s1,s2)): return (sum(s1)-sum(s2), sum(map(lambda n: n**2, s1))-sum(map(lambda n: n**2, s2)), sum(map(lambda n: n**3, s1))-sum(map(lambda n: n**3, s2)))</p>
<p>goodsets = [ss for ss in setpairs if f(ss) == (0,0,0)]<br />
</code><br />
And back comes one single response (actually, two, because the comparison is symmetric).</p>
<p><code>[([1, 4, 6, 7, 10, 11, 13, 16], [2, 3, 5, 8, 9, 12, 14, 15]),<br />
 ([2, 3, 5, 8, 9, 12, 14, 15], [1, 4, 6, 7, 10, 11, 13, 16])]<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2011/11/a-quick-python-hack-for-a-mathematical-puzzle/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Some thoughts on fire photography</title>
		<link>http://blog.mikael.johanssons.org/archive/2011/07/some-thoughts-on-fire-photography/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2011/07/some-thoughts-on-fire-photography/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 10:52:54 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=310</guid>
		<description><![CDATA[First off: I would like to apologize to the readers I still have that I never get around to updating here. I am aware that I&#8217;m writing less than once I was planning to. Aaaaanyway. I have grown very interested in photography, as those of you who have seen my photo-a-day blog will have noticed. [...]]]></description>
			<content:encoded><![CDATA[<p>First off: I would like to apologize to the readers I still have that I never get around to updating here. I am aware that I&#8217;m writing less than once I was planning to.</p>
<p>Aaaaanyway.</p>
<p>I have grown very interested in photography, as those of you who have seen my <a href="http://3x365.blogspot.com" title="3 decades past, 365 days ahead">photo-a-day blog</a> will have noticed. With the growing interest, I also notice a growing awareness of photography and of pictures, and I start thinking about how I would do things.</p>
<p>Such as this last weekend. There was a wedding. There was a wedding celebration. At one point we ended up down at a beach, watching a fire show. A friend of mine was running out of space on his memory card, so left his camera with me and ran to get the next card.</p>
<p>So I took some photos of the fire dancing (I haven&#8217;t gotten access to them myself just yet, they&#8217;ll be posted on my photo blog when I get hold of them). And I realized some things about how to photograph fire dancers. I&#8217;ll enumerate a few of me recent (though I am convinced, not original) insights here. Worth noticing is that they are pretty much all inherently contradictory, emphasizing the *craft* aspect of photography.</p>
<p><a href="http://www.flickr.com/photos/michiexile/5088198369"><img alt="Light juggling" src="http://farm5.static.flickr.com/4083/5088198369_d7797f21cd.jpg" title="Light juggling" class="alignright" width="500" height="333" /></a></p>
<p>1. <strong>Darkness matters</strong>. Large parts of the beauty of fire photography comes from actually seeing the fire, even from the fire being the main actor in the image. Hence, it helps if the fire light doesn&#8217;t have to compete with ambient light. Pick a nice location, wait until late enough in the evening that ambient light is dim if not dark.</p>
<p>2. <strong>Long exposures</strong>. Conveying the motion of the flames in a fire dance gets easier and all the more impressive if each individual flame becomes a bright, vivid streak of light, tracing out the curve of the dance. You get this with long exposures. The longer the better: time really does translate pretty much directly to vivid visuals here.</p>
<p>3. <strong>Sharp facial features</strong>. A dancer dancing blurs. This is kinda the point of the item #2 above. Blurring the fire, and limbs, imbues a sense of motion, a sense of action to the picture. However, blurring the face removes the feeling of humanity more than anything else. Keeping the dancer immobile giving them sharp, recognizable features while still moving their extremities and the fire will make for a truly iconic fire dancing picture.</p>
<p>4. <strong>Slow dances</strong>. Related to all of the above, a slow fire dance will accomplish several things for us as photographers:<br />
 a. Dancing slowly means the fire moves slowly. If you&#8217;ve ever watched a fire dancer, you&#8217;ll notice that when the fire moves slowly, it burns with a large, bright yellow flame, illuminating the area around it. Instead, when moving fast, the fire flickers, burns in a dim hot blue, and illuminates much less.<br />
 b. Dancing slowly means the dancer moves less, helping to keep the dancer sharp at the core.</p>
<p>After the performance this weekend, I talked to the performers, and I might be given the chance of making a dedicated photo shoot with them juggling fire. I am already making plans for the photo shoot: how to stage it, what to do and how. Expose for about -1, maybe -2ev, against the background, illuminating the juggler with their fire, but keeping the background visible and interesting. Posing them — with the fire — on a jetty, so that the fire dance is reflected in the water. And asking them to try and keep their face stationary, while twirling fire, and exposing at somewhere in the range of 1/2-3&#8243;.</p>
<p>At least that&#8217;s my current plan.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2011/07/some-thoughts-on-fire-photography/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Geometric realization of simplicial sets</title>
		<link>http://blog.mikael.johanssons.org/archive/2011/03/geometric-realization-of-simplicial-sets/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2011/03/geometric-realization-of-simplicial-sets/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 20:27:04 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=298</guid>
		<description><![CDATA[This post is an expansion of all the details I did not have a good feeling for when I started with for page 7 of Goerss-Jardine, where the geometric realization of simplicial sets is introduced. The construction works by constructing a few helpful categories, and using their properties along the way. Especially after unpacking the [...]]]></description>
			<content:encoded><![CDATA[<p><em>This post is an expansion of all the details I did not have a good feeling for when I started with for page 7 of Goerss-Jardine, where the geometric realization of simplicial sets is introduced.<br />
</em></p>
<p>The construction works by constructing a few helpful categories, and using their properties along the way. Especially after unpacking the categorical results G-J rely on, there are quite a few categories floating around. I shall try to be very explicit about which category is which, and how they work.</p>
<p>As we recall, simplicial sets are contravariant functors from the category <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' /> of ordinal numbers to the category of sets. We introduce the <em>simplex category</em> <img src='/latexrender/pictures/83c474f75b71de68010f0603c4b3a065.png' title='\mathbf{\Delta}\downarrow X' alt='\mathbf{\Delta}\downarrow X' align='middle' /> of a simplicial set <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> with objects (simplices) given by maps <img src='/latexrender/pictures/0402abb08238a375674c55268fd26941.png' title='\sigma:\Delta^n\to X' alt='\sigma:\Delta^n\to X' align='middle' /> and a map from <img src='/latexrender/pictures/a2ab7d71a0f07f388ff823293c147d21.png' title='\sigma' alt='\sigma' align='middle' /> to <img src='/latexrender/pictures/a6f317b268ae825d94f832f970af607c.png' title='\tau' alt='\tau' align='middle' /> being given by a map <img src='/latexrender/pictures/8fa14cdd754f91cc6554c9e71929cce7.png' title='f' alt='f' align='middle' /> in <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' /> such that <img src='/latexrender/pictures/febaa2fd3b6dd148bc0c2b0a6b8dbea9.png' title='\sigma = \tau f' alt='\sigma = \tau f' align='middle' />.</p>
<p>Interpreting each simplicial simplex as a simplicial set, this can be thought of as the subcategory of the <em>slice category</em> over <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> spanned by maps from the simplicial simplices. Any map between simplicial simplices is determined completely by a unique ordinal number map that induces it.</p>
<h2>Lemma 2.1</h2>
<p>The proof of the isomorphism<br />
<img src='/latexrender/pictures/2c9ffa62929cb659819abf236fa69909.png' title='X \equiv \colim_{\Delta^n\to X} \Delta^n' alt='X \equiv \colim_{\Delta^n\to X} \Delta^n' align='middle' /><br />
taken over all simplices in the simplex category of <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> proceeds using the theorem that every functor from a small category to sets is a colimit of representable functors.</p>
<p>To unpack this statement, we turn to, say, Awodey, where this is Proposition 8.10.</p>
<p><strong>Proposition 8.10</strong> (Steve Awodey, Category Theory)<br />
For any small category <img src='/latexrender/pictures/05d05e751a80db7375eae13c25f0ca13.png' title='\mathbf{C}' alt='\mathbf{C}' align='middle' />, every object P in the functor category <img src='/latexrender/pictures/ae74b938502fb3236115bd67f8f115b9.png' title='Sets^{\mathbf{C}^{op}}' alt='Sets^{\mathbf{C}^{op}}' align='middle' /> is a colimit of representable functors <img src='/latexrender/pictures/98510d1fa4d8df7e49cfc691aaa494d7.png' title='\colim_{j\in J} yA_j' alt='\colim_{j\in J} yA_j' align='middle' /> using the Yoneda embedding <img src='/latexrender/pictures/5af14068a037460854dafb5d1e26562c.png' title='y:\mathbf{C}\to Sets^{\mathbf{C}^{op}}' alt='y:\mathbf{C}\to Sets^{\mathbf{C}^{op}}' align='middle' />.</p>
<p>Specifically, we can choose an index category <img src='/latexrender/pictures/ff44570aca8241914870afbc310cdb85.png' title='J' alt='J' align='middle' /> and a functor <img src='/latexrender/pictures/6f4b52f8707ad5a9e78a14342b8dc88d.png' title='A: J\to \mathbf{C}' alt='A: J\to \mathbf{C}' align='middle' /> such that <img src='/latexrender/pictures/28c3af4a5489ca5e27f291ca57a67696.png' title='P \equiv \colim_{J} y\circ A' alt='P \equiv \colim_{J} y\circ A' align='middle' />.</p>
<p><strong>Proof</strong><br />
We start by introducing the <em>category of elements</em> or <em>Grothendieck category</em> of P. This will be our index category for the colimit, and is often written <img src='/latexrender/pictures/f03b3e56f5b010d881efc844f5b39bfb.png' title='\int_\mathbf{C} P' alt='\int_\mathbf{C} P' align='middle' />. This category has objects <img src='/latexrender/pictures/6f381bfb816ef88ec8a37238bb4b5de7.png' title='(x\in PC,C)' alt='(x\in PC,C)' align='middle' />, and arrows <img src='/latexrender/pictures/650a9bb7d31632076751e39fa15b135e.png' title='h: (x, C)\to (x&amp;#8217;,C&amp;#8217;)' alt='h: (x, C)\to (x&amp;#8217;,C&amp;#8217;)' align='middle' /> given by arrows <img src='/latexrender/pictures/2510c39011c5be704182423e3a695e91.png' title='h' alt='h' align='middle' /> in <img src='/latexrender/pictures/05d05e751a80db7375eae13c25f0ca13.png' title='\mathbf{C}' alt='\mathbf{C}' align='middle' /> such that <img src='/latexrender/pictures/1b3897c989fd6f08e6663281b302fd4e.png' title='P(h)x = x&amp;#8217;' alt='P(h)x = x&amp;#8217;' align='middle' />.</p>
<p>This is almost like a category of pointed sets, only that we also care about the action of P while we&#8217;re at it. Since <img src='/latexrender/pictures/05d05e751a80db7375eae13c25f0ca13.png' title='\mathbf{C}' alt='\mathbf{C}' align='middle' /> is a small category, so is <img src='/latexrender/pictures/f03b3e56f5b010d881efc844f5b39bfb.png' title='\int_\mathbf{C} P' alt='\int_\mathbf{C} P' align='middle' />, and there is a projection functor <img src='/latexrender/pictures/296c7909f26bf42422d87c4c4b475e69.png' title='\pi: \int_\mathbf{C} P \to \mathbf{C}' alt='\pi: \int_\mathbf{C} P \to \mathbf{C}' align='middle' /> given by forgetting about the point, so sending <img src='/latexrender/pictures/fa81c3883ee9935ac95123bc532a6120.png' title='(x, C)\to C' alt='(x, C)\to C' align='middle' /> and preserving the arrow forming a morphism of elements.</p>
<p>We also recall the Yoneda embedding in order to progress nicely here:<br />
<img src='/latexrender/pictures/d25252dca0a61fda543b6edbf0d2f87e.png' title='yC = \hom_{\textbf{C}(-,C)' alt='yC = \hom_{\textbf{C}(-,C)' align='middle' />. The Yoneda lemma tells us that for contravariant <img src='/latexrender/pictures/800618943025315f869e4e1f09471012.png' title='F' alt='F' align='middle' />, <img src='/latexrender/pictures/550795d7e52b8f9ff21404b1ec46a356.png' title='\hom(yC, F) = FC' alt='\hom(yC, F) = FC' align='middle' />, naturally in <img src='/latexrender/pictures/800618943025315f869e4e1f09471012.png' title='F' alt='F' align='middle' /> and <img src='/latexrender/pictures/0d61f8370cad1d412f80b84d143e1257.png' title='C' alt='C' align='middle' />, and works by assigning to <img src='/latexrender/pictures/e6a872d1a048f1406e618695f34c3eba.png' title='x\in FC' alt='x\in FC' align='middle' /> the natural transformation <img src='/latexrender/pictures/27c02d717a14bd2cb2f38a6ee87aae72.png' title='\theta_x: yC\to F' alt='\theta_x: yC\to F' align='middle' /> which has components <img src='/latexrender/pictures/5da6a65eb54bf99affa6d2c817e41560.png' title='(\theta_x)_D: \hom(D,C) \to FD' alt='(\theta_x)_D: \hom(D,C) \to FD' align='middle' />. These are defined by their actions on actual maps <img src='/latexrender/pictures/78777245aade071383067b3c119ab61e.png' title='D\to C' alt='D\to C' align='middle' /> and we set <img src='/latexrender/pictures/c16fccb7dae3c9ebc7bb76f2a9f7b0b8.png' title='(\theta_x)_D(h) = F(h)(x)' alt='(\theta_x)_D(h) = F(h)(x)' align='middle' />.</p>
<p>In other words, a contravariant functor to sets corresponds to natural transformations from the Yoneda embedding to the functor itself. An element in the functor image gives rise to a particular such natural transformation by using the element as a <em>test case</em>, and using the functor to make the test runnable. </p>
<p>Now, returning to the proof of 8.10, we need to build a colimit that will work as our colimit presentation of P. We will do this by using <img src='/latexrender/pictures/4f08e3dba63dc6d40b22952c7a9dac6d.png' title='\pi' alt='\pi' align='middle' /> and <img src='/latexrender/pictures/415290769594460e2e485922904f345d.png' title='y' alt='y' align='middle' />. Indeed, for an object <img src='/latexrender/pictures/c272fcad33e373de04e048a440b3fbcb.png' title='(x,C)\in\int_C P' alt='(x,C)\in\int_C P' align='middle' />, by the Yoneda lemma this corresponds to some natural transformation <img src='/latexrender/pictures/e0c987d76ad3ce9284bed4f9268f38ac.png' title='x: yC\to P' alt='x: yC\to P' align='middle' />. These natural transformations form a subcategory of the slice category of <img src='/latexrender/pictures/ae74b938502fb3236115bd67f8f115b9.png' title='Sets^{\mathbf{C}^{op}}' alt='Sets^{\mathbf{C}^{op}}' align='middle' /> over P by the naturality of the Yoneda construction.</p>
<p>So we can build a cocone <img src='/latexrender/pictures/3c56f7404366a62ba41d27c1a79f2042.png' title='y\pi\to P' alt='y\pi\to P' align='middle' /> by taking the map from <img src='/latexrender/pictures/f3dd6a2d8fe1c001d413dba2b23c4813.png' title='y\pi(x,C)\to P' alt='y\pi(x,C)\to P' align='middle' /> to be the natural transformation <img src='/latexrender/pictures/b729963db083c34d27ba054ac5cb3f14.png' title='x:yC\to P' alt='x:yC\to P' align='middle' />. This is a colim because if we had some other cocone <img src='/latexrender/pictures/cec41725fa428258a0dd8a20db2fa9e0.png' title='y\pi\to Q' alt='y\pi\to Q' align='middle' /> with components <img src='/latexrender/pictures/ea6897208a82166ed090cd81f7cc3dfc.png' title='\theta_{(x,C)}: yC\to Q' alt='\theta_{(x,C)}: yC\to Q' align='middle' />, we can produce the unique natural transformation <img src='/latexrender/pictures/48e16a4e3a881e6ad393cf2d69cd6a78.png' title='P\to Q' alt='P\to Q' align='middle' /> by <img src='/latexrender/pictures/2836387293d7ee8c39a3eb10822f5dca.png' title='\theta_C: PC\to QC' alt='\theta_C: PC\to QC' align='middle' /> defined by <img src='/latexrender/pictures/fa4d620fdd1f4405137a6a0f3368231c.png' title='\theta_C(x) = \theta_(x,C)' alt='\theta_C(x) = \theta_(x,C)' align='middle' /> and recall that natural transformations <img src='/latexrender/pictures/806beeb9b411afd534e7d560f9e378d9.png' title='yC\to Q' alt='yC\to Q' align='middle' /> are, by the Yoneda lemma, the same as elements of <img src='/latexrender/pictures/0f66f704a6ede9639e16587e7b2164fa.png' title='QC' alt='QC' align='middle' />.</p>
<h2>But what does all this mean!?</h2>
<p>This was probably all about as headache inducing as anything else to do with Yoneda&#8217;s lemma. It&#8217;s a result that both in its proof and its applications tends to climb the ladder of nested categorical constructs pretty high.</p>
<p>So let&#8217;s get back to the simplicial case, and tease out what this implies for our reading. <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is a simplicial set, hence a contravariant set-valued functor on <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' />. So <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' /> is our small category.</p>
<p>The category of elements, <img src='/latexrender/pictures/e6cfba8638f8daf41f629d3efd3663fc.png' title='\int_{\mathbf{\Delta}} X' alt='\int_{\mathbf{\Delta}} X' align='middle' /> is the category where objects are <img src='/latexrender/pictures/b9e358abae82ebffbe3a1c4cb8de10d4.png' title='(s, n)' alt='(s, n)' align='middle' /> for <img src='/latexrender/pictures/0c18c8bbfcdc198eb3cf5dc13d8a0cc6.png' title='s\in X_n' alt='s\in X_n' align='middle' />. Morphisms track what happens to <img src='/latexrender/pictures/03c7c0ace395d80182db07ae2c30f034.png' title='s' alt='s' align='middle' /> under faces and degeneracies. Thus, specifically, by the arguments in example 1.7, we can put <img src='/latexrender/pictures/e6cfba8638f8daf41f629d3efd3663fc.png' title='\int_{\mathbf{\Delta}} X' alt='\int_{\mathbf{\Delta}} X' align='middle' /> in bijective correspondence with the collection of all simplicial n-simplices of X, in the sense that we associate to each <img src='/latexrender/pictures/2fdfb478366265833b181e39080e6b3f.png' title='s, n' alt='s, n' align='middle' /> the simplicial map <img src='/latexrender/pictures/2fd9594f9fdb5948df76466c037bfb53.png' title='\iota_s: \Delta^n\to X' alt='\iota_s: \Delta^n\to X' align='middle' /> as defined on page 6.</p>
<p>Thus, the index category is clear. The category of elements for a simplicial set really is “just” the category of simplices <img src='/latexrender/pictures/02765601f7c8d2a19a9eb79071c1f3cf.png' title='\iota_s' alt='\iota_s' align='middle' />. The representable functors are the <img src='/latexrender/pictures/78cd0205614ca9d5acb743a3d7fbd788.png' title='yC' alt='yC' align='middle' /> for <img src='/latexrender/pictures/67257b1ca6ae869357c63f8ac49a2f53.png' title='(x,C)\in\int_{\mathbf{\Delta}} X' alt='(x,C)\in\int_{\mathbf{\Delta}} X' align='middle' />, and so are all on the shape <img src='/latexrender/pictures/768ce692fb59a228387eb5a11d848832.png' title='\hom_{\mathbf{\Delta}}(-,n)' alt='\hom_{\mathbf{\Delta}}(-,n)' align='middle' />. But these are just the collections of standard simplicial n-simplices.</p>
<p>So our simplicial set is the colimit of simplical n-simplices under the conditions that they obey the face and degeneracy maps in the original simplicial set. </p>
<p>Let&#8217;s work this all through on an example. Consider the interval I, given by non-degenerate simplices a, b, x, subject to <img src='/latexrender/pictures/0c2ecce6db026981d824dc5852266090.png' title='d_0x = a' alt='d_0x = a' align='middle' /> and <img src='/latexrender/pictures/b4d86d31e16fa47ab55f50fd368e2f7e.png' title='d_1x = b' alt='d_1x = b' align='middle' />. Maps from the simplicial n-simplex to I can hit one of these three simplices, or any degeneracy of these.</p>
<p>There are two maps <img src='/latexrender/pictures/846800ff1f84fd281dc95f4a22b42e2f.png' title='\Delta^0\to I' alt='\Delta^0\to I' align='middle' />, namely <img src='/latexrender/pictures/90fb959dcc591122a65debf1f91a6eec.png' title='\iota_0\mapsto a' alt='\iota_0\mapsto a' align='middle' /> and <img src='/latexrender/pictures/abc5ebece4be76088ed2659f45082185.png' title='\iota_0\mapsto b' alt='\iota_0\mapsto b' align='middle' />. Thus, we start the construction of our colimit by introducing cells <img src='/latexrender/pictures/1666a760513f233b70a335fc5f576dc3.png' title='e^0_a' alt='e^0_a' align='middle' /> and <img src='/latexrender/pictures/1debfae6a35cc1b578fdc36fb6ad4da7.png' title='e^0_b' alt='e^0_b' align='middle' />. Any degeneracies are adsorbed by the fact that a simplicial simplex is a simplicial map, hence <img src='/latexrender/pictures/9d13820f4c6bbef375a5ec17e84dc8f5.png' title='e^0_a: s_0\iota_0\mapsto s_0a' alt='e^0_a: s_0\iota_0\mapsto s_0a' align='middle' /> and so on.<br />
There are three maps <img src='/latexrender/pictures/e905ff218014e4a0ae58f97199b675fc.png' title='\Delta^1\to I' alt='\Delta^1\to I' align='middle' />, namely:<br />
<img src='/latexrender/pictures/92115e9f8ce555039dbb102f8b094ed7.png' title='\iota_1\mapsto s_0a' alt='\iota_1\mapsto s_0a' align='middle' /><br />
<img src='/latexrender/pictures/c9253bfbec6c02749584f3d56dd81cc3.png' title='\iota_1\mapsto s_0b' alt='\iota_1\mapsto s_0b' align='middle' /> and<br />
<img src='/latexrender/pictures/e9ab267394783af778f77bc840fa925c.png' title='\iota_1\mapsto x' alt='\iota_1\mapsto x' align='middle' /><br />
These three choices all come with boundary maps that have to be taken into account in the colimit. Specifically, the two first maps here, the ones that hit degenerate simplices, factor through <img src='/latexrender/pictures/1666a760513f233b70a335fc5f576dc3.png' title='e^0_a' alt='e^0_a' align='middle' /> and <img src='/latexrender/pictures/1debfae6a35cc1b578fdc36fb6ad4da7.png' title='e^0_b' alt='e^0_b' align='middle' /> respectively. There is a map <img src='/latexrender/pictures/20f5090e077012176251533107295124.png' title='\Delta^1\to\Delta^0' alt='\Delta^1\to\Delta^0' align='middle' /> (in the category <img src='/latexrender/pictures/3eb383281927193b89b53dc378e8a041.png' title='\mathbf{\Delta}' alt='\mathbf{\Delta}' align='middle' />) given by <img src='/latexrender/pictures/1517c2db9d2726bccd4f195158dd24d9.png' title='(0,1)\mapsto (0,0) = s^0\iota_0' alt='(0,1)\mapsto (0,0) = s^0\iota_0' align='middle' />. This map corresponds to the map <img src='/latexrender/pictures/925968d18aeb44f579476f56e5c6a136.png' title='s_0:\Delta^0\to\Delta^1' alt='s_0:\Delta^0\to\Delta^1' align='middle' /> (as a map of simplicial simplices), which embeds the simplex <img src='/latexrender/pictures/1666a760513f233b70a335fc5f576dc3.png' title='e^0_a' alt='e^0_a' align='middle' /> into <img src='/latexrender/pictures/e905ff218014e4a0ae58f97199b675fc.png' title='\Delta^1\to I' alt='\Delta^1\to I' align='middle' />. Thus, this embedding along degeneracies is a map in the index category of the colimit, and therefore leads to an identification of any simplex with all its degeneracies in the colimit. The non-degenerate case gives us a simplex <img src='/latexrender/pictures/8f8966789e387bb14fe6025b006fca7a.png' title='e^1_x' alt='e^1_x' align='middle' />.<br />
Similarly, the colimit forces the identifications <img src='/latexrender/pictures/bb5ee145dafc8cac2ad68ba804b01b38.png' title='d_0e^1_x = e^0_a' alt='d_0e^1_x = e^0_a' align='middle' /> and <img src='/latexrender/pictures/ac6cc3d27350ad7a86f70e2cb68083e0.png' title='d_1e^1_x = e^0_b' alt='d_1e^1_x = e^0_b' align='middle' />, finishing the description of <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> as a colimit.</p>
<p>Now, we have a nice candidate for the realization of a single simplicial n-simplex: the topological n-simplex defined in Example 1.1. This is used to define the geometric realization of a simplicial set through “simply” forcing the realization functor to be compatible with this colimit structure. Thus, we define the geometric realization of a simplicial set to be the colimit of the topological n-simplices over the same index category that we used to display <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> as a colimit.</p>
<h2>Well, what about adjointness?</h2>
<p>The first <em>really</em> nice property about realization is that it is left adjoint to the singular functor. Proving this is a sequence in abstract symbol manipulation and remembering what everything at each step of the way actually means. Thus, say we have a simplicial set X and a topological space Y. Adjointness means there is an isomorphism<br />
<img src='/latexrender/pictures/6415c33d1ce0d9788d26cce799d4db20.png' title='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{sSet}}(X, SY)' alt='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{sSet}}(X, SY)' align='middle' /><br />
which is natural in both X and Y.</p>
<p>Now, let&#8217;s consider the left hand side.<br />
<img src='/latexrender/pictures/c677a4e4095a44d9f913f09a6ecbd2e0.png' title='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y)' alt='\hom_{\mathbf{Top}}(|X|, Y) \equiv \hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y)' align='middle' /><br />
by definition of the geometric realization.<br />
<img src='/latexrender/pictures/3373f1d2fc6d74185b7986674cd9bf74.png' title='\hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y) \equiv \lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)' alt='\hom_{\mathbf{Top}}(\colim_{\Delta^n\to X}|\Delta^n|, Y) \equiv \lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)' align='middle' /><br />
because contravariant representable functors map colimits to limits. This is Awodey 5.29, and sits very well with our intuition from sets, vector spaces, and just about anywhere else.<br />
Now, remember that a map in <img src='/latexrender/pictures/75ce0cb5338b9f6e8646ffb1ef1fa3d3.png' title='\hom_{\mathbf{Top}}(|\Delta^n|, Y)' alt='\hom_{\mathbf{Top}}(|\Delta^n|, Y)' align='middle' /> is a simplex in the singular set <img src='/latexrender/pictures/174fe2539889bbf873e7c2de71949074.png' title='SY' alt='SY' align='middle' />, and that as we saw above, a simplicial set is the colimit of its simplices. Thus, we get<br />
<img src='/latexrender/pictures/ce472bb63ea6d56dab770525ace7d297.png' title='\lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)\equiv\lim_{\Delta^n\to X}\hom_{\mathbf{sSet}}(\Delta^n, SY)' alt='\lim_{\Delta^n\to X}\hom_{\mathbf{Top}}(|\Delta^n|, Y)\equiv\lim_{\Delta^n\to X}\hom_{\mathbf{sSet}}(\Delta^n, SY)' align='middle' /><br />
and then finally, we can re-introduce the colimit inside the morphism set<br />
<img src='/latexrender/pictures/979ab360581c389222d17f83706c9b17.png' title='\lim_{\Delta^n\to X}\hom_{\mathbf{S}}(\Delta^n, SY) = \hom_{\mathbf{sSet}}(\colim_{\Delta^n\to X}\Delta^n, SY)' alt='\lim_{\Delta^n\to X}\hom_{\mathbf{S}}(\Delta^n, SY) = \hom_{\mathbf{sSet}}(\colim_{\Delta^n\to X}\Delta^n, SY)' align='middle' /><br />
<img src='/latexrender/pictures/ca04e26adc82c4a654facdd3dbee3645.png' title=' = \hom_{\mathbf{sSet}}(X,SY)' alt=' = \hom_{\mathbf{sSet}}(X,SY)' align='middle' /></p>
<p>Each step along the way is natural, which finishes the proof.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2011/03/geometric-realization-of-simplicial-sets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Topology of Politics</title>
		<link>http://blog.mikael.johanssons.org/archive/2011/01/the-topology-of-politics/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2011/01/the-topology-of-politics/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 19:09:35 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Data Analysis]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=278</guid>
		<description><![CDATA[This is a typed up copy of my lecture notes from the seminar at Linköping, 2010-08-25. This is not a perfect copy of what was said at the seminar, rather a starting point from which the talk grew. In my workgroup at Stanford, we focus on topological data analysis — trying to use topological tools [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a typed up copy of my lecture notes from the seminar at Linköping, 2010-08-25. This is not a perfect copy of what was said at the seminar, rather a starting point from which the talk grew.<br />
</em></p>
<p>In my workgroup at Stanford, we focus on <em>topological data analysis</em> — trying to use topological tools to understand, classify and predict data.</p>
<p>Topology gets appropriate for qualitative rather than quantitative properties; since it deals with <em>closeness</em> and not <em>distance</em>; also makes such approaches appropriate where distances exist, but are ill-motivated.</p>
<p>These approaches have already been used successfully, for analyzing</p>
<ul>
<li>physiological properties in Diabetes patients</li>
<li>neural firing patterns in the visual cortex of Macaques</li>
<li>dense regions in <img src='/latexrender/pictures/2e6b3a9237fed3402ba9e5563fedc687.png' title='\mathbb{R}^9' alt='\mathbb{R}^9' align='middle' /> of 3&#215;3 pixel patches from natural (b/w) images</li>
<li>screening for CO<sub>2</sub> adsorbative materials</li>
</ul>
<p>In a project joint with Gunnar Carlsson (Stanford), Anders Sandberg (Oxford) (and more collaborators), we act on the belief that political data can be amenable to topological analyses.</p>
<h2>1st: What do we mean by political data?</h2>
<p>We currently look at 3 types of data:</p>
<ol>
<li>Vote matrices from parliament:<br />
each column is a member of parliament<br />
each row is a rollcall<br />
we codify votes numerically: +1/-1 for Yea/Nay</p>
<p>And then we can do data analysis either on the set of members of parliament in the space of rollcalls, or on the set of rollcalls in the space of members of parliament.</li>
<li>Co-sponsorship graphs<br />
Nodes are members of parliament.<br />
A directed edge goes from each co-sponsor to the main sponsor of a particular bill, for all bills.<br />
For Swedish politics, parties end up being strongly connected internally, with coalition mediators appearing in the data.</li>
<li>Shared N-gram graphs<br />
Some turns of phrase, some talking points, get introduced and then re-used by other members of parliament.<br />
We believe that an analysis of N-grams of parliamentary speeches may well give a data analyst tools to capture memetic drift and spread within partliament.</li>
</ol>
<p>The project is still at an early stage, and the great challenge for us right now is to find value to add — in political science, the grand entrance of classical data analysis was a few decades ago, and much of what can be said about politics with classical data analysis tools has already been said.</p>
<h2>2nd: What has already been done?</h2>
<p>Political science discovered data analysis in the 90s, and a flurry of political science data analysis papers followed.</p>
<p>Thus, while illustrative, doing things like a PCA on political vote data is not quite novel.<br />
<img src="http://blog.mikael.johanssons.org/wp-content/quiz3.png" alt="PCA of British MPs in the space of rollcalls" /><img src="http://blog.mikael.johanssons.org/wp-content/quizplot2.png" alt="US congress rollcalls in the space of representatives" /></p>
<p>Doing these PCAs, though, shows us, for instance, that the US house &#038; senate are essentially linear,<br />
<img src="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/congressMembers2009.png" alt="" title="congressMembers2009" width="567" height="57" class="alignnone size-full wp-image-279" /><br />
and that the votes point cloud sits on most of the boundary of a unit square (above right): at least one party backs every bill that comes to a vote, and the main difference between bills is in how many of the other party join in too.</p>
<p>Already in this kind of analysis, we notice a difference over time — the party line is a much stronger factor in 2009 than it was in 1990:<br />
<a href="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/congressVotes1990.png"><img src="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/congressVotes1990.png" alt="" title="congressVotes1990" width="85" height="85" class="alignnone size-full wp-image-280" /></a><a href="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/congressVotes2009.png"><img src="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/congressVotes2009.png" alt="" title="congressVotes2009" width="85" height="85" class="alignnone size-full wp-image-282" /></a></p>
<p>We can perform similar analyses for the UK:<br />
<img src="http://blog.mikael.johanssons.org/wp-content/quiz3.png" alt="PCA of British MPs in the space of rollcalls" /><br />
Here we may notice that the regional parties are pretty much included with the ideologically closest major party. This is a phenomenon we&#8217;re going to revisit later on.</p>
<p>With Swedish vote data, we&#8217;ve been able to both locate the blocks as essentially grouped under the first two coordinates of a PCA; with lower coordinates seemingly issues-oriented — it&#8217;s worth noticing component 5 which separates out C and MP from the other parties, and thus seems to be the axis of environmentalism in Swedish politics.<br />
<a href="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/subcomponentsABC.png"><img src="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/subcomponentsABC.png" alt="" title="Swedish politics PCA, by party and by component" width="400" height="300" class="alignnone size-full wp-image-291" /></a><br />
image courtesy of Anders Sandberg</p>
<h2>3rd: How do we bring in topology?</h2>
<p>There are several techniques developed at Stanford for topological data analysis. While my own research has been centered around <em>persistent homology</em>, the one I want to present here is different.</p>
<p>Mapper was developed by Gurjeet Singh, Facundo Memoli and Gunnar Carlsson. It builds on combining <em>nerves</em> with <em>parameter spaces</em>.</p>
<p><strong>Definition:</strong><br />
Suppose <img src='/latexrender/pictures/435973928c1be8b15f55e428fa02c35e.png' title='\{U_i\}_{i\in I}' alt='\{U_i\}_{i\in I}' align='middle' /> is a family of open sets. Then the <em>nerve</em> <img src='/latexrender/pictures/a1db9a15f79a3c728f420b9adfa9dd16.png' title='\mathcal{N}(\{U_i\})' alt='\mathcal{N}(\{U_i\})' align='middle' /> is a simplicial complex with vertices the index set I, and a k-simplex <img src='/latexrender/pictures/8428819d16e17e55bbe594ef02feab0b.png' title='\sigma=(i_0,\dots,i_k)' alt='\sigma=(i_0,\dots,i_k)' align='middle' /> if <img src='/latexrender/pictures/c33d075451c897fb8db8d5a507730940.png' title='\bigcap_{i\in\sigma} U_i \neq\emptyset' alt='\bigcap_{i\in\sigma} U_i \neq\emptyset' align='middle' />.</p>
<p><strong>Lemma:</strong> [Nerve Lemma]<br />
If <img src='/latexrender/pictures/c8e38ad7b44f8a1d346f8f74ef8433e1.png' title='\{U_i\}' alt='\{U_i\}' align='middle' /> covers a paracompact space X, and all finite intersections are contractible, then X is homotopy equivalent to the nerve of the covering.</p>
<p>Now, if X is a topological space with a coordinate function <img src='/latexrender/pictures/87d9eda24095e1883e1a12a94b42c217.png' title='X\xlongrightarrow{f}Z' alt='X\xlongrightarrow{f}Z' align='middle' /> and Z is (paracompact and) covered by some family of <img src='/latexrender/pictures/2613ee0449498d55793453205b97e8b8.png' title='U_i' alt='U_i' align='middle' />, then the collection of preimages covers X.</p>
<p>So, by subdividing each preimage of a set in the covering of Z into its connected components, we get a covering of X subdividing the cover induced from Z.</p>
<p>Thus, if f is sufficiently wellbehaved and the covering is fine enough, the nerve of these subdivided preimages is homotopy equivalent to X, and we have found a triangulation (up to homotopy) of X.</p>
<p>This particular line of reasoning can be translated into a statistical/data analytic setting. The main difference is that by virtue of persistent topology, connected components correspond to clusters, and so we may start with a point cloud, and then pick out preimages of the cover of our target space, cluster these, and let each cluster correspond to a point, and then introduce simplices according to the intersections.<br />
The process is illustrated in a <a href="/wp-content/uploads/2011/01/animation.pdf">PDF “animation” here</a>.</p>
<p>This technique has been used already to recover the difference between diabetes type I and II as lobes in the data, apparent in blue here:<br />
<a href="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/diabetestwo.png"><img src="http://blog.mikael.johanssons.org/wp-content/uploads/2011/01/diabetestwo.png" alt="" title="diabetestwo" width="612" height="792" class="alignnone size-full wp-image-294" /></a></p>
<p>We hope to be able to use these techniques to better understand the way parliaments are structured internally.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2011/01/the-topology-of-politics/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Species, derivatives of types and Gröbner bases for operads</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/12/species-derivatives-of-types-and-grobner-bases-for-operads/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/12/species-derivatives-of-types-and-grobner-bases-for-operads/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 01:05:30 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Category theory]]></category>
		<category><![CDATA[Combinatorics]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Operads and PROPs]]></category>
		<category><![CDATA[Research]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=270</guid>
		<description><![CDATA[This is a typed up copy of my lecture notes from the combinatorics seminar at KTH, 2010-09-01. This is not a perfect copy of what was said at the seminar, rather a starting point from which the talk grew. In some points, I&#8217;ve tried to fill in the most sketchy and un-articulated points with some [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a typed up copy of my lecture notes from the combinatorics seminar at KTH, 2010-09-01. This is not a perfect copy of what was said at the seminar, rather a starting point from which the talk grew.</p>
<p>In some points, I&#8217;ve tried to fill in the most sketchy and un-articulated points with some simile of what I ended up actually saying.<br />
</em></p>
<p>Combinatorial species started out as a theory to deal with enumerative combinatorics, by providing a toolset &#038; calculus for formal power series. (see Bergeron-Labelle-Leroux and Joyal)</p>
<p>As it turns out, not only is species useful for manipulating generating functions, btu it provides this with a categorical approach that may be transplanted into other areas.</p>
<p>For the benefit of the entire audience, I shall introduce some definitions.</p>
<p><strong>Definition</strong>: A <em>category</em> C is a collection of <em>objects</em> and <em>arrows</em> with each arrow assigned a <em>source</em> and <em>target</em> object, such that </p>
<ol>
<li>Each object has its own <em>identity arrow</em> 1.</li>
<li>Chains of arrows are associatively <em>composable</em>, with 1 the identity of this composition.</li>
</ol>
<p><strong>Examples</strong>: Sets, Finite sets, k-Vector spaces, left and right R-Modules, Graphs, Groups, Abelian groups.</p>
<p><img src='/latexrender/pictures/e19c41413e1b974679b02bd79d5d494c.png' title='\mathbb B' alt='\mathbb B' align='middle' />: finite sets with only bijections as morphisms.</p>
<p><strong>Examples</strong>: </p>
<ul>
<li>Category of a monoid.</li>
<li>Category generated by a graph</li>
<li>Category of a group (groupoid version of the category of a monoid)</li>
<li>Category of a poset</li>
<li>Category of Haskell types and functions.</li>
</ul>
<p><strong>Definition</strong>: A <em>functor</em> F is a map of categories, in other words, a pair of maps Fo on objects and Fa on arrows, such that the identity arrow maps to identity arrows and compositions of maps map to compositions of their images.</p>
<p><strong>Examples</strong>:<br />
Constant functor: sends every object to A, every map to 1.</p>
<p>Identity functor: sends objects and arrows to themselves.</p>
<p>Underlying set functor, free monoid/vector space/module/&#8230; functors.</p>
<p>We are now equipped to define Species:<br />
<strong>Definition</strong>: A <em>species of structures</em> is a functor <img src='/latexrender/pictures/248ed9b3523a819e669addcfca0dd9e1.png' title='\mathbb B\to\mathbb B' alt='\mathbb B\to\mathbb B' align='middle' />.</p>
<p>The idea is a set gets mapped to the set of all structures labelled by the elements in the original set. A bijection on labels maps to the <em>transport of structures</em> along the relabeling. </p>
<p><strong>Examples</strong>:<br />
<img src='/latexrender/pictures/7fc56270e7a70fa81a5935b72eacbe29.png' title='A' alt='A' align='middle' />: rooted trees, labels on vertices<br />
<img src='/latexrender/pictures/dfcf28d0734569a6a693bc8194de62bf.png' title='G' alt='G' align='middle' />: simple graphs, labels on vertices<br />
<img src='/latexrender/pictures/68306c3af365d0638ca6a65e96012770.png' title='Gc' alt='Gc' align='middle' />: connected simple graphs, labels on vertices.<br />
<img src='/latexrender/pictures/0cc175b9c0f1b6a831c399e269772661.png' title='a' alt='a' align='middle' />: trees, labels on vertices.<br />
<img src='/latexrender/pictures/f623e75af30e62bbd73d6df5b50bb7b5.png' title='D' alt='D' align='middle' />: directed graphs, labels on vertices<br />
<img src='/latexrender/pictures/1a13d972a2c8473f075ded6eca465169.png' title='\wp' alt='\wp' align='middle' />: subsets, <img src='/latexrender/pictures/ab03f17fcfe3bf3f9f730c032cf12151.png' title='\wp[U] = \{S: S\subseteq U\}' alt='\wp[U] = \{S: S\subseteq U\}' align='middle' />.<br />
<img src='/latexrender/pictures/87557f11575c0ad78e4e28abedc13b6e.png' title='End' alt='End' align='middle' />: endofunctions<br />
<img src='/latexrender/pictures/a7e871520a392b978d3c9e6344c4407f.png' title='Inv' alt='Inv' align='middle' />: involutions<br />
<img src='/latexrender/pictures/5dbc98dcc983a70728bd082d1a47546e.png' title='S' alt='S' align='middle' />: permutations<br />
<img src='/latexrender/pictures/0d61f8370cad1d412f80b84d143e1257.png' title='C' alt='C' align='middle' />: cycles<br />
<img src='/latexrender/pictures/d20caec3b48a1eef164cb4ca81ba2587.png' title='L' alt='L' align='middle' />: linear orders<br />
<img src='/latexrender/pictures/3a3ea00cfc35332cedf6e5e9a32e94da.png' title='E' alt='E' align='middle' />: sets: <img src='/latexrender/pictures/4784af6daa47ce1b4dc27c7f968b48a3.png' title='E[U] = \{U\}' alt='E[U] = \{U\}' align='middle' /><br />
<img src='/latexrender/pictures/e1671797c52e15f763380b45e841ec32.png' title='e' alt='e' align='middle' />: elements: <img src='/latexrender/pictures/8f19454f9794245cdbaabf2330720444.png' title='e[U] = U' alt='e[U] = U' align='middle' /><br />
<img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />: singletons: <img src='/latexrender/pictures/eedeabedbaf43a4ce7a1b347c32faf43.png' title='X[U] = U' alt='X[U] = U' align='middle' /> if <img src='/latexrender/pictures/a03dbebf1f9af1a9557fff5ace5c7534.png' title='|U|=1' alt='|U|=1' align='middle' /> and <img src='/latexrender/pictures/0118beed08546bf49c98e18e68f4e401.png' title='X[U] = \emptyset' alt='X[U] = \emptyset' align='middle' /> otherwise<br />
<img src='/latexrender/pictures/c4ca4238a0b923820dcc509a6f75849b.png' title='1' alt='1' align='middle' />: empty set: <img src='/latexrender/pictures/09f8d10bb99358b7c16cdbe36bea58a0.png' title='1[\emptyset]=\{\emptyset\}' alt='1[\emptyset]=\{\emptyset\}' align='middle' />, <img src='/latexrender/pictures/926ff03720b581dc624f4de2af07bac3.png' title='1[U] = \emptyset' alt='1[U] = \emptyset' align='middle' /> otherwise<br />
<img src='/latexrender/pictures/cfcd208495d565ef66e7dff9f98764da.png' title='0' alt='0' align='middle' />: empty species: <img src='/latexrender/pictures/e864d4557560227f5f4276edab39b730.png' title='0[U] = \emptyset' alt='0[U] = \emptyset' align='middle' />.</p>
<p>In enumerative combinatorics, the power of species resides in the association to each species a number of generating functions:</p>
<p>The generating series of a species F is the exponential formal power series<br />
<img src='/latexrender/pictures/4d16123f57c0b624af2c2edf792d1cd8.png' title='F(x) = \sum_{n=0}^\infty |F[n]|\frac{x^n}{n!}' alt='F(x) = \sum_{n=0}^\infty |F[n]|\frac{x^n}{n!}' align='middle' /><br />
where we use the convention <img src='/latexrender/pictures/aa863c04e18ac592a7560ac3e3a581b1.png' title='[n] = \{1,2,\dots,n\}' alt='[n] = \{1,2,\dots,n\}' align='middle' />, and <img src='/latexrender/pictures/e246dceb6995c5555b1eeb2d505e1708.png' title='F[n] = F[[n]]' alt='F[n] = F[[n]]' align='middle' />.<br />
Thus:<br />
<img src='/latexrender/pictures/3263ff4d9c8a689eae466290bc3052c8.png' title='L(x) = \frac{1}{1-x}' alt='L(x) = \frac{1}{1-x}' align='middle' /><br />
<img src='/latexrender/pictures/3f525bcdaa7612df493b0d76e1364151.png' title='S(x) = \frac{1}{1-x}' alt='S(x) = \frac{1}{1-x}' align='middle' /><br />
<img src='/latexrender/pictures/f77a81e173d3ac51473b37a36e4b323c.png' title='E(x) = e^x' alt='E(x) = e^x' align='middle' /><br />
<img src='/latexrender/pictures/7c5625058ffe6ddb20482fc3079c784a.png' title='e(x) = xe^x' alt='e(x) = xe^x' align='middle' /><br />
<img src='/latexrender/pictures/9063d24c51c77a8c1f84d329a2bed613.png' title='\wp(x) = e^{2x}' alt='\wp(x) = e^{2x}' align='middle' /><br />
<img src='/latexrender/pictures/38d07f869ac97a6ed1deb8574ed0953e.png' title='X(x) = x' alt='X(x) = x' align='middle' /><br />
<img src='/latexrender/pictures/da2ca5efb767fbf1d7d2b4409f3c83f0.png' title='1(x) = 1' alt='1(x) = 1' align='middle' /><br />
<img src='/latexrender/pictures/a78d5784bdd192b7dc4c1b784d719d26.png' title='0(x) = 0' alt='0(x) = 0' align='middle' /></p>
<p>There are a number other in use for combinatorics, but for my purposes, this is the one I&#8217;ll focus on.</p>
<h2>Operations on species</h2>
<p>The real power, though, emerges when we start combining species, and carry over the combinations to actions on the corresponding power series.</p>
<h3>Addition</h3>
<p>The number of ways to form either, say, a graph or a linear order on a set of labels is the sum of the numbers of ways to form either in isolation.</p>
<p>This corresponds cleanly to the coproduct in Set, and we may write F+G for the species<br />
<img src='/latexrender/pictures/d6b9d55d36e1ef2d9b3cce2ce7b09615.png' title='(F+G)[U] = F[U] + G[U]' alt='(F+G)[U] = F[U] + G[U]' align='middle' /><br />
(where the second + is the coproduct — i.e. disjoint union — of sets)</p>
<p>In the power series, we get <img src='/latexrender/pictures/66cb1c86460c5b712cc3ba8b2a0d173b.png' title='(F+G)(x) = F(x) + G(x)' alt='(F+G)(x) = F(x) + G(x)' align='middle' />.</p>
<p>Examples: We may define the species of all non-empty sets <img src='/latexrender/pictures/335d135de25fe2dbf0ccd0f20e0150e1.png' title='E_+' alt='E_+' align='middle' /> by<br />
<img src='/latexrender/pictures/d3315d79ecf2826aaf6b198de80e58d7.png' title='E = 1 + E_+' alt='E = 1 + E_+' align='middle' /><br />
This kind of functional equations is where the theory of species starts to really <em>shine</em>.</p>
<h3>Multiplication</h3>
<p>A tricoloring of a set is a subdivision of the set into three disjoint subsets covering the original set. The number of tricolorings of size n is<br />
<img src='/latexrender/pictures/2cfc95b03d7d4f37d4b7410b9361c214.png' title='\sum_{i+j+k=n} \#\text{sets of size i}\cdot\#\text{sets of size j}\cdot\#\text{sets of size k}' alt='\sum_{i+j+k=n} \#\text{sets of size i}\cdot\#\text{sets of size j}\cdot\#\text{sets of size k}' align='middle' /></p>
<p>A permutation fixes some set of points. The permutation restricted to the non-fixed points is a <em>derangement</em>. Total number of permutations on n elements is<br />
<img src='/latexrender/pictures/475edeb2b536c63ecf62bc9221c06f10.png' title='\sum_{i+j=n}\#\text{sets of size i}\cdot\#\text{derangements of size j}' alt='\sum_{i+j=n}\#\text{sets of size i}\cdot\#\text{derangements of size j}' align='middle' /></p>
<p>In both of these cases, the total generating series is a product of the component series, and we end up defining<br />
<img src='/latexrender/pictures/f05a2036cc62d20e8b6c8a7262f09461.png' title='F\cdot G[U] = \{(f,g): f\in F[U_1], g\in G[U_2], U_1\cap U_2 = \emptyset, U_1\cup U_2 = U\}' alt='F\cdot G[U] = \{(f,g): f\in F[U_1], g\in G[U_2], U_1\cap U_2 = \emptyset, U_1\cup U_2 = U\}' align='middle' /><br />
So <img src='/latexrender/pictures/25b126e16d73bffde96f15011ec62ba6.png' title='F\cdot G[U] = \sum_{U_1,U_2\text{ decompose }U} F[U_1]\times G[U_2]' alt='F\cdot G[U] = \sum_{U_1,U_2\text{ decompose }U} F[U_1]\times G[U_2]' align='middle' />.</p>
<p>Thus, tricolorings are <img src='/latexrender/pictures/77d013a0d46948384f8cd9b41535b43c.png' title='E\cdot E\cdot E' alt='E\cdot E\cdot E' align='middle' /> and permutations are <img src='/latexrender/pictures/65637937dfc1372e746af745b30dabe8.png' title='S = E\cdot Der' alt='S = E\cdot Der' align='middle' />, where the set is that of fixed points, and the derangement captures the actual action of the permutation.</p>
<h3>Composition</h3>
<p>Endofunctions of sets decompose in their actions on the points as cycles or directed trees leading in to these cycles.</p>
<p>Since a collection of disjoint cycles corresponds to a permutation, we can consider such endofunctions to be permutations decorated with rooted trees attached to points of the permutations; or even permutations of rooted trees.</p>
<p>To form such a structure on a set U, we&#8217;d first partition U into subsets, put the structure of a rooted tree on each subset, and then the structure of a permutation on the set of these subsets.</p>
<p>Thus, the number of such structures on n elements is<br />
<img src='/latexrender/pictures/335e2e52de4ab24686357d7fff2b2b15.png' title='\sum_{r\leq n}\sum_{\sum_{k=1}^n i_k = n} \#\tex{permutations on [r]}\cdot\prod_{k=1}^r\#\text{rooted trees on [i_k]}' alt='\sum_{r\leq n}\sum_{\sum_{k=1}^n i_k = n} \#\tex{permutations on [r]}\cdot\prod_{k=1}^r\#\text{rooted trees on [i_k]}' align='middle' /></p>
<p>This corresponds to the power series <img src='/latexrender/pictures/e0411f63150f22a2f99be1510b5910f0.png' title='S(A(x))' alt='S(A(x))' align='middle' />, and we write, in general, <img src='/latexrender/pictures/31029fa092055be1deacf9e244f20333.png' title='F\circ G[U]' alt='F\circ G[U]' align='middle' /> for the species of F-structures of G-structures on subsets.</p>
<p><strong>Examples</strong>:<br />
A = X·E(A)<br />
L = 1 + X·L<br />
B = 1 + X·B·B</p>
<h3>Pointing</h3>
<p>Picking out a single point in a structure on n points can be done in precisely n ways.</p>
<p>Thus the corresponding generating function will be<br />
<img src='/latexrender/pictures/149891bfc400f34cdb0f99d080acc7ef.png' title='\sum n\cdot f_n\cdot\frac{x^n}{n!}' alt='\sum n\cdot f_n\cdot\frac{x^n}{n!}' align='middle' /><br />
for f-structures with a single label distinguished.</p>
<p>Since we&#8217;re working with exponential power series, we may notice that<br />
<img src='/latexrender/pictures/c561d318629404536b769f934f360554.png' title='\frac{\partial}{\partial x} \sum f_n\frac{x^n}{n!} = \sum f_{n+1}\frac{x^n}{n!}' alt='\frac{\partial}{\partial x} \sum f_n\frac{x^n}{n!} = \sum f_{n+1}\frac{x^n}{n!}' align='middle' /><br />
and thus that derivatives are shifts.<br />
Furthermore, <img src='/latexrender/pictures/be3a9d4b57954e8b767df9234c2529b4.png' title='x\cdot\sum f_n\frac{x^n}{n!} = \sum f_n\frac{x^{n+1}}{n!} = \sum f_{n-1}n\cdot{x^n}{n!}' alt='x\cdot\sum f_n\frac{x^n}{n!} = \sum f_n\frac{x^{n+1}}{n!} = \sum f_{n-1}n\cdot{x^n}{n!}' align='middle' /><br />
so that the generating function for F-structures with a single distinguished are<br />
<img src='/latexrender/pictures/594ef9019767eed975d7e51efbddf20a.png' title='F^\bullet(x) = x\cdot\frac{\partial}{\partial x}F(x)' alt='F^\bullet(x) = x\cdot\frac{\partial}{\partial x}F(x)' align='middle' /></p>
<p>In species, this process is called pointing.</p>
<p>In functional programming, Conor McBride related this construction to Huet&#8217;s Zipper datatypes.</p>
<p>As it turns out, many of the constructions for species make eminent sense outside the category <img src='/latexrender/pictures/e19c41413e1b974679b02bd79d5d494c.png' title='\mathbb B' alt='\mathbb B' align='middle' />. In fact, species in Hask are known to programming language researchers as <em>container datatypes</em> and the whole calculus translates relatively cleanly.</p>
<p>Functional equations translate to the standard new data type definitions in Haskell.</p>
<p><strong>Examples</strong>:<br />
L = 1 + X·L<br />
<code><br />
data List a = Nil | Cons a (List a)<br />
</code></p>
<p>B = 1 + X·B·B<br />
<code><br />
data BinaryTree a = Leaf | Node (BinaryTree a) a (BinaryTree a)<br />
</code></p>
<p>A = X·E(A)<br />
<code><br />
data RootedTree a = Node a (Set (RootedTree a))<br />
</code><br />
usually, we simulate the Set here by a List. If we need for our rooted trees to be planar, we can in fact impose a Linear Order structure instead, and get something like<br />
Ap = X·L(Ap)</p>
<p>The species interpretation of <img src='/latexrender/pictures/4d6c379f66675645b3ffe28a15306857.png' title='\frac{\partial}{\partial x}' alt='\frac{\partial}{\partial x}' align='middle' /> corresponding to leaving a hole in the structure carries over cleanly, so that <img src='/latexrender/pictures/27f5948c4a69349055a73e917f5f5b6e.png' title='\frac{\partial}{\partial x}T' alt='\frac{\partial}{\partial x}T' align='middle' /> is the type of T-with-a-hole.</p>
<h2>Two derivatives of lists</h2>
<p>We can deal with  <img src='/latexrender/pictures/12b5d0430c70edf45c18de84a4609c6b.png' title='\frac{\partial}{\partial x}L' alt='\frac{\partial}{\partial x}L' align='middle' /> in two different ways:</p>
<p>1.<br />
DL = D(1+X·L) = D1 + D(X·L) = 0 + DX·L+X·DL<br />
and thus<br />
DL-X·DL = 1·L<br />
so (1-X)·DL = L<br />
and thus<br />
DL = L·1/(1-X)</p>
<p>Now, from L=1+X·L follows by a similar cavalier use of subtraction and division — which, by the way, in species theory is captured by the idea of a <em>virtual species</em>, and dealt with relatively cleanly — that<br />
L = 1+X·L<br />
so<br />
L-X·L = 1<br />
and thus<br />
(1-X)·L = 1<br />
so<br />
L = 1/(1-X)</p>
<p>Thus, we can conclude that<br />
DL = L·1/(1-X) = L·L<br />
and thus, a list with a hole is a pair of lists: the stuff before the hole and the stuff after the hole.</p>
<p>2.<br />
We could, instead of using implicit differentiation, as in 1, attack the derivation we had of<br />
L = 1/(1-X) = 1+X+X·X+X·X·X+…</p>
<p>Indeed,<br />
DL = D(1/(1-X)) = D(1+X+X·X+…) = 0+1+2X+3X·X+…<br />
which we can observe factors as<br />
= (1+X+X·X+X·X·X+…)·(1+X+X·X+X·X·X+…) = L·L</p>
<p>Or we can just use the division rule<br />
DL = D(1/(1-X)) = D(1/u)·D(1-X) = -1/(u·u)·(-1) = 1/[(1-X)·(1-X)] = L·L</p>
<h2>Gröbner bases for operads</h2>
<p>All of this becomes relevant to the implementation of Buchberger&#8217;s algorithm on shuffle operads (see Dotsenko—Khoroshkin and Dotsenko—Vejdemo-Johansson)  in the step where the S-polynomials (and thereby also the reductions) are defined. With a common multiple defined, we need some way to extend the modifications that take the initial term to the common multiple to the rest of that term.</p>
<p>For this, it turns out, that the derivative of the tree datatype used provides theoretical guarantees that only partially filled in trees of the right size, with holes the right size, can be introduced; and also provides an easy and relatively efficient algorithm for contructing the hole-y trees and later filling in the holes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/12/species-derivatives-of-types-and-grobner-bases-for-operads/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Teaching and seminars up ahead</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/08/teaching-and-seminars-up-ahead/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/08/teaching-and-seminars-up-ahead/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 11:37:28 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2010/08/teaching-and-seminars-up-ahead/</guid>
		<description><![CDATA[I&#8217;ll be talking quite a bit in the next couple of weeks; here&#8217;s a “heads up” for those who might want to come and listen. 25 August, 1pm, Linköpings Universitet. The topology of Politics. 1 September, 10am, KTH. Combinatorial species, Haskell datatypes and Gröbner bases for operads. 1 September, 1pm, KTH. Topological data analysis and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be talking quite a bit in the next couple of weeks; here&#8217;s a “heads up” for those who might want to come and listen.</p>
<p>25 August, 1pm, Linköpings Universitet. The topology of Politics.</p>
<p>1 September, 10am, KTH. Combinatorial species, Haskell datatypes and Gröbner bases for operads.</p>
<p>1 September, 1pm, KTH. Topological data analysis and the topology of politics.</p>
<p>2, 3, 6, 7 September, 11am, KTH. Mini-course on Applied algebraic topology.</p>
<p>I&#8217;m happy to give out details if you&#8217;d like to come and listen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/08/teaching-and-seminars-up-ahead/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Itinerary for the Summer</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/04/itinerary-for-the-summer/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/04/itinerary-for-the-summer/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 03:38:45 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/archive/2010/04/itinerary-for-the-summer/</guid>
		<description><![CDATA[A few things that may interest people. 1. I&#8217;m going on the job market in the fall. I&#8217;m looking for lectureships, tenure tracks, possibly 2 year postdocs if they are really interesting. 2. I&#8217;m very interested in adding visits, adding seminars, adding anything interesting to this itinerary. If you want to meet me, send me [...]]]></description>
			<content:encoded><![CDATA[<p>A few things that may interest people.</p>
<p>1. I&#8217;m going on the job market in the fall. I&#8217;m looking for lectureships, tenure tracks, possibly 2 year postdocs if they are really interesting.</p>
<p>2. I&#8217;m very interested in adding visits, adding seminars, adding anything interesting to this itinerary. If you want to meet me, send me a note, and I&#8217;m sure we can find time. My email adress is easy to google, and listed in the site info here.<br />
I have current research and survey talks mostly ready to go for:</p>
<dl>
<dt>Barcodes and the topological analysis of data: an overview</dt>
<dd>In the past decade, the use of topology in explicit applications has become a growing field of research. One fruitful approach has been to view a dataset as a point cloud: a finite (but large) subset of a Euclidean space, and construct filtered simplicial complexes that capture distances between the data points. Doing this, we can translate any topological functor into a functor that acts on these filtered complexes, and reinterpret the results from the functors into information about the dataset. I&#8217;ll illustrate the basic results from the field, and give an overview of where my own research fits into the emergent paradigm.</dd>
<dt>Persistent cohomology and circular coordinates</dt>
<dd>Using a new variety of the algorithms described by Zomorodian, we are able to compute cohomology persistently, use persistence to pick out topologically relevant cocycles, and convert these into circle-valued coordinates. This allows us to generate topological coordinatizations for datasets, opening up for new approaches to data analysis.</dd>
<dt>Dualities in persistence</dt>
<dd>Starting out with a point cloud, the use of the barcode of persistent Betti numbers to characterize properties of the point cloud is well known. Expanding the amount of information we extract, we are led to study persistent homology and cohomology, in both an absolute manner, studying H(X<sub>i</sub>), and in a relative manner, studying H(X<sub>&infin;</sub>; X<sub>i</sub>). We are able to show that these four possible homology functors are related by dualization functors Hom<sub>k</sub>(-, k) and Hom<sub>k[x]</sub>(-, k[x]), and are able to use this to translate between all four corners. This way, we can choose to compute our barcodes in whatever situation an application motivates, and translate the resulting the barcode into whatever situation we want to interpret.</dd>
<dt>Period recognition with circular coordinates</dt>
<dd>In work joint with Vin de Silva and Dmitriy Morozov on computing circular coordinates for datasets may be used in the analysis of dynamical systems and in signal processing. We have experimental results that show a high resistance to spatial noise in reconstructing the period of a periodic process while avoiding Fourier transforms and running differences. Ideally, the use of algebraic topology in time series analysis for dynamical systems and signals will complement existing methods with more noise-robust components, and I discuss to some extent how this may be achieved.</dd>
<dt>Implementing Gröbner Bases for Operads</dt>
<dd>In a paper by Dotsenko and Khoroshkin, a Buchberger algorithm is defined in an equivalent subcategory of the category of symmetric operads. For this subcategory, they prove a Diamond lemma, and demonstrate how the existence of a quadratic Gröbner basis amounts to a demonstration of Koszularity of the corresponding finitely presented operad. During a conference at CIRM in Luminy, me and Dotsenko built an implementation of their work. I&#8217;ll discuss the implementation work, and what considerations need to be taken in the implementation of Gröbner bases for operads.</dd>
<dt>Parallelizing multigraded Gröbner bases</dt>
<dd>In work together with Emil Sköldberg and Jason Dusek, we use the lattice of degrees for a multigraded polynomial ring to parallelize Gröbner basis computations in the multigraded ring. We show speedups in implementations in Haskell using Data Parallel Haskell and the vector package, as well as in Sage using MPI for parallelization and SQL for abstract data storage and transport.</dd>
<dt>The topology of politics</dt>
<dd>While the use of data analysis in political science is a mature field, the development of new data analysis methods calls for updates in the choice, use and  interpretation of these methods. We set out to investigate the use of the topological data analysis methods worked out at Stanford on political datasets in an ongoing research project. I&#8217;ll illustrate initial results, partly well-known, on the geometry and topology of parliamentary rollcall datasets.</dd>
<dt>Stepwise computing of diagonals for multiplicative families of polytopes</dt>
<dd>In recent work together with Ron Umble, we demonstrate a way to use basic linear algebra to compute cellular diagonal maps for families of polytope such that each face of each polytope in the family is given by products of other polytopes in the same family. Using the algorithm we describe, we are able to recover the Alexander-Whitney diagonal on simplices, the Serre diagonal on cubes as well as the Saneblidze-Umble diagonal on associahedra.</dd>
</dl>
<p>3. This summer, I will be present at :<br />
<a href=http://comptop.stanford.edu/atmcs4>ATMCS</a> in Münster, Germany, June 21-26<br />
<a href=http://nafpaktostopology.math.upatras.gr/>Topology and its Applications</a> in Nafpaktos, Greece, June 26-30<br />
<a href=http://delone120.mi.ras.ru/index.html> The International Conference<br />
&#8220;GEOMETRY, TOPOLOGY,<br />
ALGEBRA and NUMBER THEORY, APPLICATIONS&#8221;<br />
dedicated to the 120th anniversary of Boris Delone</a> in Moscow, Russia, August 16-20<br />
<a href=http://www.cs.uu.nl/wiki/bin/view/IFL2010/WebHome> Symposium on Implementation and Application of Functional Languages</a> near Amsterdam, Holland, September 1-3<br />
<a href=http://www.math.kobe-u.ac.jp/icms2010/> International Congress on Mathematical Software</a> in Kobe, Japan, September 13-17</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/04/itinerary-for-the-summer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Repeal the nth amendment</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/03/repeal-the-nth-amendment/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/03/repeal-the-nth-amendment/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 19:42:24 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Communicating science]]></category>
		<category><![CDATA[Improbable research]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Sillyness]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=249</guid>
		<description><![CDATA[Inspired by this post over at Making Light, here, have a chart: First, Second, &#8230; 1st, 2nd, &#8230; And, because this chart is kinda tricky to read, here&#8217;s the log-scaled version of the same chart: For the log-chart, I stopped stacking the numbers. ETA: Changed the log-chart from a line-chart to a bar-chart after feedback [...]]]></description>
			<content:encoded><![CDATA[<p>Inspired by <a href="http://nielsenhayden.com/makinglight/archives/012276.html">this post</a> over at Making Light, here, have a chart:</p>
<p><img src='http://chart.apis.google.com/chart?cht=bvs&#038;chs=500x400&#038;chd=t:686000,2450000,10,429000,298000,83300,39600,85400,5,203000,43300,6,72200,368000,58000,137000,93700,128000,28900,1,9,34300,9,1,8,5,0|221000,1020000,7540,130000,45000,34100,6,27700,4,238000,4,18700,71300,328000,24800,467000,974000,136000,187000,8,76600,363000,10300,10800,16200,15100,8&#038;chds=0,3500000&#038;chco=00aa33,0033aa&#038;chbh=5,7,2&#038;chxr=1,0,3500000,500000|0,1,27&#038;chxs=1N*e,cc3333,10|0N*f0,cc3333,8&#038;chxt=x,y&#038;chtt=Google+hits+for+Repeal+nth+amendment&#038;chdl=First+Second+...|1st+2nd+...' /></p>
<p><span style="color:#00aa33;">First, Second, &#8230;</span></p>
<p><span style="color:#0033aa;">1st, 2nd, &#8230;</span></p>
<p>And, because this chart is kinda tricky to read, here&#8217;s the log-scaled version of the same chart:</p>
<p><img src='http://chart.apis.google.com/chart?cht=bvg&#038;chs=600x400&#038;chd=t:5.836324122037575,6.3891660861371626,1.0004340774793186,5.632457302308139,5.4742162786498954,4.9206450535429767,4.5976952955958224,4.9314579215431564,0.69983772586724569,5.3074960593070291,4.6364879966523107,0.77887447200273952,4.8585372577212249,5.5658478304749979,4.7634280684412902,5.1367205988567326,4.9717396372372402,5.1072100035771237,4.4608979930314288,0.0043213737826425782,0.95472479097906293,4.5352942466592188,0.95472479097906293,0.0043213737826425782,0.90363251608423767,0.69983772586724569,-2.0|5.3443922933364441,6.0086001760197068,3.8773719218567688,5.1139433857141032,4.6532126102852178,4.5327545063515648,0.77887447200273952,4.4424799258494314,0.60314437262018228,5.3765769753041788,0.60314437262018228,4.2718418387794754,4.8530895907627283,5.5158738569523642,4.3944518559449239,5.6693168898657795,5.9885589613374908,5.1335389403036338,5.271841629760802,0.90363251608423767,4.8842288263290081,5.5599066370001475,4.0128376463500954,4.0334241576112841,4.2095152826255617,4.1789772349053136,0.90363251608423767&#038;chf=c,ls,90,ffeeee,0.20,FFFFFF,0.80&#038;chg=100,10,1,5&#038;chds=-2,8&#038;chco=00aa33,0033aa&#038;chbh=2,1,5&#038;chxr=1,-2,8,1|0,1,27,1&#038;chxs=1N*f0,cc3333,10|0N*f0,cc3333,8&#038;chxt=x,y&#038;chtt=log10+of+Google+hits+for+Repeal+nth+amendment&#038;chdl=First+Second+...|1st+2nd+...' /></p>
<p>For the log-chart, I stopped stacking the numbers. </p>
<p><i>ETA:</i> Changed the log-chart from a line-chart to a bar-chart after feedback from the readership of <a href=http://boingboing.org>bOINGbOING</a>. Hello and welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/03/repeal-the-nth-amendment/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Another kind of sports reporting</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/02/another-kind-of-sports-reporting/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/02/another-kind-of-sports-reporting/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 19:08:03 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Sillyness]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=246</guid>
		<description><![CDATA[Inspired by John Allen Paulos, who just now tweeted Obvious, but NBC hasn&#8217;t said: Canada, Norway, Germany way ahead of US in Olympic medals per capita. Many ways to rank: Cf. Arrow&#8217;s theorem. I decided to redo the medals list. Here, the number of medals per capita among the top countries. Country Gold/capita Silver/capita Bronze/capita [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/List_of_countries_by_population">Inspired by John Allen Paulos, who just now tweeted</p>
<blockquote><p>
Obvious, but NBC hasn&#8217;t said: Canada, Norway, Germany way ahead of US in Olympic medals per capita. Many ways to rank: Cf. Arrow&#8217;s theorem.
</p></blockquote>
<p>I decided to redo the medals list. Here, the number of medals per capita among the top countries.</p>
<table>
<tr>
<th>Country</th>
<th>Gold/capita</th>
<th>Silver/capita</th>
<th>Bronze/capita</th>
<th>Total/capita</th>
</tr>
<tr>
<td>Norway</td>
<td>1.23E-06</td>
<td>6.17E-07</td>
<td>1.03E-06</td>
<td>2.88E-06</td>
</tr>
<tr>
<td>Austria</td>
<td>3.58E-07</td>
<td>3.58E-07</td>
<td>3.58E-07</td>
<td>1.07E-06</td>
</tr>
<tr>
<td>Slovenia</td>
<td>0</td>
<td>4.87E-07</td>
<td>4.87E-07</td>
<td>9.74E-07</td>
</tr>
<tr>
<td>Switzerland</td>
<td>6.43E-07</td>
<td>0</td>
<td>2.57E-07</td>
<td>9.00E-07
</td>
</tr>
<tr>
<td>Latvia</td>
<td>0</td>
<td>8.90E-07</td>
<td>0</td>
<td>8.90E-07</td>
</tr>
<tr>
<td>Sweden</td>
<td>3.21E-07</td>
<td>2.14E-07</td>
<td>2.14E-07</td>
<td>7.49E-07</td>
</tr>
<tr>
<td>Estonia</td>
<td>0</td>
<td>7.46E-07</td>
<td>0</td>
<td>7.46E-07</td>
</tr>
<tr>
<td>Slovakia</td>
<td>1.84E-07</td>
<td>1.84E-07</td>
<td>1.84E-07</td>
<td>5.53E-07</td>
</tr>
<tr>
<td>Croatia</td>
<td>0</td>
<td>2.25E-07</td>
<td>2.25E-07</td>
<td>4.51E-07</td>
</tr>
<tr>
<td>Netherlands</td>
<td>1.81E-07</td>
<td>6.03E-08</td>
<td>6.03E-08</td>
<td>3.01E-07</td>
</tr>
<tr>
<td>Canada</td>
<td>1.47E-07</td>
<td>1.18E-07</td>
<td>2.94E-08</td>
<td>2.94E-07</td>
</tr>
<tr>
<td>Czech republic</td>
<td>9.51E-08</td>
<td>0</td>
<td>1.90E-07</td>
<td>2.85E-07</td>
</tr>
<tr>
<td>Germany</td>
<td>8.56E-08</td>
<td>1.10E-07</td>
<td>6.12E-08</td>
<td>2.57E-07</td>
</tr>
<tr>
<td>Belarus</td>
<td>0</td>
<td>1.05E-07</td>
<td>1.05E-07</td>
<td>2.11E-07</td>
</tr>
<tr>
<td>Finland</td>
<td>0</td>
<td>1.87E-07</td>
<td>0</td>
<td>1.87E-07</td>
</tr>
<tr>
<td>Korea</td>
<td>8.04E-08</td>
<td>8.04E-08</td>
<td>2.01E-08</td>
<td>1.81E-07</td>
</tr>
<tr>
<td>France</td>
<td>3.06E-08</td>
<td>3.06E-08</td>
<td>6.11E-08</td>
<td>1.22E-07</td>
</tr>
<tr>
<td>Poland</td>
<td>0</td>
<td>7.87E-08</td>
<td>2.62E-08</td>
<td>1.05E-07</td>
</tr>
<tr>
<td>Australia</td>
<td>4.51E-08</td>
<td>4.51E-08</td>
<td>0</td>
<td>9.02E-08</td>
</tr>
<tr>
<td>USA</td>
<td>2.27E-08</td>
<td>2.59E-08</td>
<td>3.24E-08</td>
<td>8.10E-08</td>
</tr>
<tr>
<td>Russian Federation</td>
<td>1.41E-08</td>
<td>2.11E-08</td>
<td>4.23E-08</td>
<td>7.75E-08</td>
</tr>
<tr>
<td>Italy</td>
<td>0</td>
<td>1.66E-08</td>
<td>4.98E-08</td>
<td>6.64E-08</td>
</tr>
<tr>
<td>Kazakhstan</td>
<td>0</td>
<td>6.34E-08</td>
<td>0</td>
<td>6.34E-08</td>
</tr>
<tr>
<td>Japan</td>
<td>0</td>
<td>7.85E-09</td>
<td>1.57E-08</td>
<td>2.35E-08</td>
</tr>
<tr>
<td>Great Britain</td>
<td>1.61E-08</td>
<td>0</td>
<td>0</td>
<td>1.61E-08
</td>
</tr>
<tr>
<td>China</td>
<td>2.25E-09</td>
<td>7.49E-10</td>
<td>7.49E-10</td>
<td>3.74E-09<br />
</tr>
</table>
<p>(Data taken on February 23, from the current state of olympic medals achieved at that date, and from the <a href="http://en.wikipedia.org/wiki/List_of_countries_by_population">Wikipedia page listing populations of the nations of the earth</a>, taken the same date)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/02/another-kind-of-sports-reporting/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Testing out the wplatex package</title>
		<link>http://blog.mikael.johanssons.org/archive/2010/02/testing-out-the-wplatex-package/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2010/02/testing-out-the-wplatex-package/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 04:38:45 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Administrative]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[LaTeX]]></category>
		<category><![CDATA[Metablogging]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=243</guid>
		<description><![CDATA[Eric Finster, over at Curious Reasoning has built a python script to allow you to write WordPress posts entirely in LaTeX , and upload them. The script parses the LaTeX code and generates HTML that expresses the same structure. This, here, is me trying it out. With any luck, the appearance of a new toy [...]]]></description>
			<content:encoded><![CDATA[<p>
Eric Finster, over at <a href=http://curiousreasoning.wordpress.com>Curious Reasoning</a> has built a python script to allow you to write WordPress posts entirely in LaTeX , and upload them. The script parses the LaTeX code and generates HTML that expresses the same structure. </p>
<p>
This, here, is me trying it out. With any luck, the appearance of a new toy will get me back to actually blogging some more &#8211; it&#8217;s been winding down a bit much here lately. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2010/02/testing-out-the-wplatex-package/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coordinatization with hom complexes</title>
		<link>http://blog.mikael.johanssons.org/archive/2009/12/coordinatization-with-hom-complexes/</link>
		<comments>http://blog.mikael.johanssons.org/archive/2009/12/coordinatization-with-hom-complexes/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 21:55:12 +0000</pubDate>
		<dc:creator>Michi</dc:creator>
				<category><![CDATA[Homology and Homotopy]]></category>
		<category><![CDATA[Mathematics]]></category>
		<category><![CDATA[Research]]></category>
		<category><![CDATA[Topology]]></category>

		<guid isPermaLink="false">http://blog.mikael.johanssons.org/?p=238</guid>
		<description><![CDATA[These are notes from a talk given at the Stanford applied topology seminar by Gunnar Carlsson from 9 Oct 2009. The main function of this blog post is to get me an easily accessible point of access for the ideas in that talk. Coordinatization First off, a few words on what we mean by coordinatization: [...]]]></description>
			<content:encoded><![CDATA[<p>These are notes from a talk given at the Stanford applied topology seminar by Gunnar Carlsson from 9 Oct 2009. The main function of this blog post is to get me an easily accessible point of access for the ideas in that talk.</p>
<h2>Coordinatization</h2>
<p>First off, a few words on what we mean by coordinatization: as in algebraic geometry, we say that a coordinate function is some <img src='/latexrender/pictures/7a366999ac6bcec934e01e48875d028d.png' title='X\to\mathbb R' alt='X\to\mathbb R' align='middle' /> or possibly some <img src='/latexrender/pictures/97d101f61e5bf831095eaeebf1bf0f02.png' title='X\to\mathbb C' alt='X\to\mathbb C' align='middle' />, with all the niceness properties we&#8217;d expect to see in the context we&#8217;re working.</p>
<p>A particularly good example is Principal Component Analysis which yields a split linear automorphism on the ambient space that maximizes spread of the data points in the initial coordinates.</p>
<h2>Topological coordinatization</h2>
<p>The core question we&#8217;re working with right now is this:<br />
Given a space (point cloud) X, and a (persistent) view of <img src='/latexrender/pictures/3de32d30e739c5c4dd5cb3408e4a599d.png' title='H_*(X)' alt='H_*(X)' align='middle' />, can we use some map <img src='/latexrender/pictures/231f1fda16241dfbb7706ee9a8b8c5c4.png' title='H_*(X)\to H_*(Y)' alt='H_*(X)\to H_*(Y)' align='middle' /> to generate a map <img src='/latexrender/pictures/c5c6eab38071acc9d029224e005ee003.png' title='X\to Y' alt='X\to Y' align='middle' /> inducing that map?</p>
<p>In topology there are ways around to compute spaces of maps directly from available homological information. The key phrase here is the <em>Eilenberg-Moore spectral sequence</em>, by which we compute <img src='/latexrender/pictures/1d9f67073cc06542303cda94df25ba02.png' title='H^*(\Omega X)' alt='H^*(\Omega X)' align='middle' /> using <img src='/latexrender/pictures/4bf2fabf6191fa36f442f6d71802224c.png' title='H^*(X)' alt='H^*(X)' align='middle' />. We note that <img src='/latexrender/pictures/41378f34e2388d7b9dae1b1f2f9b1578.png' title='\Omega X = Top_*(S^1,X)' alt='\Omega X = Top_*(S^1,X)' align='middle' /> with the <em>compact open</em> topology.</p>
<p>We fix a field k of coefficients. We can find a spectral sequence that computes<br />
<img src='/latexrender/pictures/b0130a74f05784c57b3b6dee36f263b8.png' title='Tor_{H^*(X)}(k,k)&amp;#8217; \Rightarrow H^*(\Omega X)' alt='Tor_{H^*(X)}(k,k)&amp;#8217; \Rightarrow H^*(\Omega X)' align='middle' /></p>
<p>Variations of this spectral sequence allow us to compute <img src='/latexrender/pictures/7b6306ce97bd676ad849c0b68bd46106.png' title='H^*(Map(X,Y))' alt='H^*(Map(X,Y))' align='middle' />. A homotopy class of maps thus corresponds to a cohomology element from <img src='/latexrender/pictures/5972c601ddb4ce9c449ad068ef9c7331.png' title='H^*(F(X,Y))' alt='H^*(F(X,Y))' align='middle' />.</p>
<h2>Monad approximation</h2>
<p>Define<br />
<img src='/latexrender/pictures/13df48c200db51646079eac6e467c4ed.png' title='Sp^2(X) = X \times_{\mathbb Z/2} X' alt='Sp^2(X) = X \times_{\mathbb Z/2} X' align='middle' /> (unordered pairs)<br />
and similarily unordered tuples<br />
<img src='/latexrender/pictures/3a4edb4b9c6c0dc33db0086cba8f9aaa.png' title='Sp^n(X) = X^n/\Sigma_n' alt='Sp^n(X) = X^n/\Sigma_n' align='middle' /><br />
we can get a map, for pointed spaces <img src='/latexrender/pictures/e678778186e1fd232c27f98e503c3705.png' title='(X,*)' alt='(X,*)' align='middle' /><br />
<img src='/latexrender/pictures/523603cb51eb401f5a93dc943763558f.png' title='Sp^n(X) \to Sp^{n+1}(X)' alt='Sp^n(X) \to Sp^{n+1}(X)' align='middle' /><br />
<img src='/latexrender/pictures/14eae37b5881b3a6a6ac7f9f5b040610.png' title='(x_1,\dots,x_n)\mapsto(x_1,\dots,x_n,*)' alt='(x_1,\dots,x_n)\mapsto(x_1,\dots,x_n,*)' align='middle' /></p>
<p>In the limit, we get the union <img src='/latexrender/pictures/c2d34ef4436574e1341c0ac4e4fba3ac.png' title='Sp^\infty(X)' alt='Sp^\infty(X)' align='middle' />.</p>
<p>The Dold-Thom theorem tells us:<br />
<img src='/latexrender/pictures/f5384e3eae6472abc41622b48f916dcd.png' title='\pi_i(Sp^\infty(X)) = H_i(X)' alt='\pi_i(Sp^\infty(X)) = H_i(X)' align='middle' /></p>
<p>Suppose we are really looking for maps <img src='/latexrender/pictures/03221fb866beb0e41e83e53df6c31087.png' title='Z\to Sp^\infty(X,*) \supseteq X = Sp^1(X)' alt='Z\to Sp^\infty(X,*) \supseteq X = Sp^1(X)' align='middle' />.</p>
<p>We pick chain complexes <img src='/latexrender/pictures/daa23756436e9545a9debd1c8448b7b2.png' title='C_*, D_*' alt='C_*, D_*' align='middle' />. There is a hom chain complex <img src='/latexrender/pictures/25c20015c704c9fbe48528018ce4b680.png' title='Hom(C_*,D_*)' alt='Hom(C_*,D_*)' align='middle' /> consisting of graded maps <img src='/latexrender/pictures/1f905c8580b7edcb95a677159ed139c2.png' title='C_*\to D_*' alt='C_*\to D_*' align='middle' /> with the homotopy/induced boundary<br />
<img src='/latexrender/pictures/204d908299845193d9723c00046b6b69.png' title='\Delta f = \partial_Df\pm f\partial_C' alt='\Delta f = \partial_Df\pm f\partial_C' align='middle' /></p>
<p>For this complex, we get<br />
<img src='/latexrender/pictures/a025672061535ddf2e7858115806d213.png' title='H_0(Hom(C_*,D_*))' alt='H_0(Hom(C_*,D_*))' align='middle' /> is the family of chain homotopy classes of chain maps <img src='/latexrender/pictures/1f905c8580b7edcb95a677159ed139c2.png' title='C_*\to D_*' alt='C_*\to D_*' align='middle' />.</p>
<p>Recall: <img src='/latexrender/pictures/9049a848dae63b78d444bb938a7de466.png' title='f,g' alt='f,g' align='middle' /> are chain homotopic if there is a family <img src='/latexrender/pictures/4683e6ba08551d7ad78c442b4dbe248a.png' title='h_i: C_i\to D_{i+1}' alt='h_i: C_i\to D_{i+1}' align='middle' /> such that <img src='/latexrender/pictures/34a71fda819a1f156c18d00ec44ff8af.png' title='f-g = \partial_D h_i + h_{i-1}\partial_C' alt='f-g = \partial_D h_i + h_{i-1}\partial_C' align='middle' />.</p>
<p>Homotopic space maps yield homotopic chain complex maps. And thus<br />
<img src='/latexrender/pictures/2916a30ae0f353cc4b23e5901d3ef386.png' title='Top_*(Z,Sp^\infty(X)) = H_*(Hom(C_*,D_*),\Delta)' alt='Top_*(Z,Sp^\infty(X)) = H_*(Hom(C_*,D_*),\Delta)' align='middle' /></p>
<p>How, though, do we get from <img src='/latexrender/pictures/fd0bba61b6dfa256cf73e479bd9845e7.png' title='[Z,Sp^\infty(X)]' alt='[Z,Sp^\infty(X)]' align='middle' /> to <img src='/latexrender/pictures/6e643ef9d5ed52970f589c63b3e42540.png' title='[Z,X]' alt='[Z,X]' align='middle' />?</p>
<h2>Cosimplicial spaces</h2>
<p>A simplicial space is a contravariant <img src='/latexrender/pictures/8bad30511496d987d0d11f74a6e0e7fb.png' title='\Delta\to X' alt='\Delta\to X' align='middle' />. It has a <em>total space</em> or <em>realization</em> given by<br />
<img src='/latexrender/pictures/d1b9714668d5e1dd4ecd46986b3a9cee.png' title='\coprod X_n\times\Delta[n]/\sim' alt='\coprod X_n\times\Delta[n]/\sim' align='middle' /></p>
<p>In the dual setting of cosimplicial spaces, the total space is a subspace of <img src='/latexrender/pictures/a32ddfcbcc00aa625661ed682822c8a3.png' title='X^0\times(X^1)^{\Delta[1]}\times(X^2)^{\Delta[2]}\times(X^3)^{\Delta[3]}\times\dots' alt='X^0\times(X^1)^{\Delta[1]}\times(X^2)^{\Delta[2]}\times(X^3)^{\Delta[3]}\times\dots' align='middle' />.</p>
<p>There is a cosimplicial space<br />
<img src='/latexrender/pictures/eb3ba7500d673ea4677d3bad96f4b749.png' title='Sp^\infty(X) \leftrightarrow Sp^\infty Sp^\infty(X) \leftrightarrow \dots' alt='Sp^\infty(X) \leftrightarrow Sp^\infty Sp^\infty(X) \leftrightarrow \dots' align='middle' /><br />
whose total space is <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' />. </p>
<p>Furthermore, there is a spectral sequence starting at <img src='/latexrender/pictures/dc994233d52be6b24430741f721a9f26.png' title='H_*(Sp^\infty(X))' alt='H_*(Sp^\infty(X))' align='middle' /> (well understood space!)<br />
going through<br />
<img src='/latexrender/pictures/d991c819be2ca0eb6ae8a6d936156dd3.png' title='\pi_*(Top_*(Z,Sp^\infty Sp^\infty Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  X))' alt='\pi_*(Top_*(Z,Sp^\infty Sp^\infty Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  Sp^\infty X)) \leftrightarrow \pi_*(Top_*(Z,Sp^\infty  X))' align='middle' /><br />
which recovers <img src='/latexrender/pictures/ff1b8f06a4b4ffe2fb9dd14ce1b3281c.png' title='\pi_*(Top_*(Z,X))' alt='\pi_*(Top_*(Z,X))' align='middle' /> for us.</p>
<p>The mapping space <img src='/latexrender/pictures/c0547dfffa5536d9d42473c5be15b265.png' title='Top_*(Z,X)' alt='Top_*(Z,X)' align='middle' /> maps to <img src='/latexrender/pictures/158dd486167098051bc7609b7418b7bb.png' title='Top_*(Z,Sp^\infty X)' alt='Top_*(Z,Sp^\infty X)' align='middle' />, which sends <img src='/latexrender/pictures/b98d91c0c31e9744f375d31198d43ffc.png' title='H_*(Hom(C_*Z,C_*X))' alt='H_*(Hom(C_*Z,C_*X))' align='middle' /> to chain maps. Differentials give us conditions on chain maps to come from actual maps on the topological level <img src='/latexrender/pictures/f892a0dd0c0635937b911aa416b45385.png' title='Z\to X' alt='Z\to X' align='middle' />.</p>
<p>Suppose now that <img src='/latexrender/pictures/02129bb861061d1a052c592e2dc6b383.png' title='X' alt='X' align='middle' /> is a simplicial complex, and <img src='/latexrender/pictures/6d576ce6dee607ab8c36823747bdde3e.png' title='H_*X' alt='H_*X' align='middle' /> is known, say isomorphic to <img src='/latexrender/pictures/8d9ab1e8e97ebe6e83b6823c3ad067a8.png' title='H_*S^1' alt='H_*S^1' align='middle' />.</p>
<p>We pick <img src='/latexrender/pictures/679c4c927f816045befe573024ddd21b.png' title='S^1' alt='S^1' align='middle' /> as a model space, and work in <img src='/latexrender/pictures/27bdf889e1dc3e7b9d92bce75a27878f.png' title='Hom(C_*X,C_*S^1)' alt='Hom(C_*X,C_*S^1)' align='middle' />. We pick out conditions form the spectral sequence above to pick out chain maps that might come from topological maps.</p>
<p>Suppose we had some chain map <img src='/latexrender/pictures/6aa47fb9380f66fc33a3203cb17fb375.png' title='C_*X\overset{\varphi}{\to}C_*S^1' alt='C_*X\overset{\varphi}{\to}C_*S^1' align='middle' /> that sends <img src='/latexrender/pictures/e2b84a8d10865458b52a3f9638e61780.png' title='\sigma\mapsto\sum_{i=0}^n\eta_i' alt='\sigma\mapsto\sum_{i=0}^n\eta_i' align='middle' />.</p>
<p>We look for a chain homotopic map <img src='/latexrender/pictures/deb91d5ad889541f13fb0fdbe50cb465.png' title='\hat\varphi' alt='\hat\varphi' align='middle' /> such that <img src='/latexrender/pictures/672c34d7e86aa2f9d36d723e839905d7.png' title='\hat\varphi(\sigma)' alt='\hat\varphi(\sigma)' align='middle' /> is a simplex (this will be WAY too optimistic, usually) or at least <img src='/latexrender/pictures/76af92f70407245bf83fcad21cd44ffe.png' title='\hat\varphi(\sigma) = \sum_{i=0}^n\eta_i' alt='\hat\varphi(\sigma) = \sum_{i=0}^n\eta_i' align='middle' /> for small <img src='/latexrender/pictures/7b8b965ad4bca0e41ab51de7b31363a1.png' title='n' alt='n' align='middle' /> and <img src='/latexrender/pictures/0cd55065f5366e853225383434efc0a1.png' title='\eta_i' alt='\eta_i' align='middle' /> close together in graph distances.</p>
<p>Yi Ding: there are likely many simplicial maps <img src='/latexrender/pictures/9112868fb2412bf46b638359cbf0ae9b.png' title='X\to S^1' alt='X\to S^1' align='middle' /> inducing any given <img src='/latexrender/pictures/2ec47654285e3cde82835f5108ed02e6.png' title='H_*X\to H_*S^1' alt='H_*X\to H_*S^1' align='middle' />. This makes optimizations on quality of maps (as measured in smallness properties of preimages of given simplices) troublesome, since we have a large search space and are likely to get stuck in local minima.</p>
<p>The topological approach creates very many maps, but we just want ONE &#8211; albeit with quality assurances. The big question is how to get there:</p>
<p>Shrinking the space? Homotopy collapses to reduce the number of generators?</p>
<p>Ask for more side conditions? If so, which?</p>
<p>Minimize the size of preimages and kernels &#8211; smoothing the resulting map?</p>
<p>Run with one condition until we reach a minimum, then change conditions to get out of that particular sink, repeat until it all looks stable?</p>
<p>Thus we need to search for strategies to improve convergence to actually good maps. </p>
<p>The questions we pose are similar to:</p>
<p>Jeff Ericksson, et al.: Given X, <img src='/latexrender/pictures/f37de6c8678aeeb25c8db5fea63941dc.png' title='x\in H_n(X)' alt='x\in H_n(X)' align='middle' />, how do we find a good representative <img src='/latexrender/pictures/469abcb4c4e81c81a68bea82ff6de380.png' title='\xi\in x' alt='\xi\in x' align='middle' />?</p>
<p>Finding good maps is really about finding good representatives in <img src='/latexrender/pictures/b2dd1894936c89847097bfec74edcae6.png' title='Hom(C_*X,C_*Y)' alt='Hom(C_*X,C_*Y)' align='middle' />. Given simplicial bases <img src='/latexrender/pictures/503a61d501d42064de556150d75e1fa3.png' title='\{\sigma_i\}\subseteq X, \{\eta_i\}\subseteq Y' alt='\{\sigma_i\}\subseteq X, \{\eta_i\}\subseteq Y' align='middle' /> we can pick out a first basis<br />
<img src='/latexrender/pictures/247a2e3627b8cb8620d00ea6a9b7cd2a.png' title='\varphi_{\sigma_i\eta_j}(\sigma_k)=\delta_{ik}\eta_j' alt='\varphi_{\sigma_i\eta_j}(\sigma_k)=\delta_{ik}\eta_j' align='middle' /> (Kronecker <img src='/latexrender/pictures/77a3b715842b45e440a5bee15357ad29.png' title='\delta' alt='\delta' align='middle' />) for <img src='/latexrender/pictures/43d0b5d9c180f05c90e5b879b74a1ebb.png' title='Hom(C_*X,C_*Y' alt='Hom(C_*X,C_*Y' align='middle' />.</p>
<p>Finally: many problems in data analysis call for analyzing contractible spaces. So if we pick out the notion of a boundary, doing all of this relative to a boundary would give us increased power to use the resulting methods in data analysis.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mikael.johanssons.org/archive/2009/12/coordinatization-with-hom-complexes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

