It is well-known that the question whether a given connected simplicial complex (or simplicial set) is simply connected, is algorithmically undecidable as it can model the word problem.



> 
> Assuming that $X$ is simply connected, is there an algorithmic way how
>  to contract loops?
> 
> 
> 


One way how this can be formalized is as follows. $X$ can be a simply connected simplicial set (with either finitely many nondegenerate simplices in each dimension, or at least with effective homology...) and $\tilde{GX}$ the Kan model of the loop space, such as described [here](https://www.jstor.org/stable/1970006?seq=1#page_scan_tab_contents). The loop contraction would than be a map $c: \tilde{GX}\_0\to \tilde{GX}\_1$ such that $d\_0 c(x)=x$ and $d\_1 c(x)=1$. Is there any hope to have a general algorithm for evaluating $c(x)$?



Can we algorithmically contract loops in a simply connected space?
I am assuming that you have a complex with finite 2-dimensional skeleton. There is a silly algorithm for contracting loops which is even linear in the combinatorial length of the loop. 


Start with defining the "standard presentation" for $\pi\_1(X)$, namely, construct a maximal subtree $T\subset X^1$. Generators of $\pi\_1(X)$ are represented by edges in $X^1 -T$ connecting vertices of $X$. Let $g\_i, i=1,..,n$ be the corresponding loops in $X^1$ (based at a vertex $o\in T$). Since $X$ is simply-connected, there exist combinatorial maps $e\_i: D^2\to X$ with boundary maps $\partial e\_i=g\_i$: You find these by listing all combinatorial maps $D^2\to X$ and examining them one-by-one. Now, each based combinatorial loop $g$ in $(X^1,o)$ is a product of the generators $g\_i$ and their inverses:
$$
g= g^{\pm 1}\_{i\_1}....g^{\pm 1}\_{i\_k}
$$
 This is again completely algorithmic since it amounts to reading off the product of the oriented edges in $X^1-T$ as they appear in $g$. Lastly, you read off the maps $e\_i$ (and their pre-composition with suitable reflections in $D^2$) according to the word 
$$
w= g^{\pm 1}\_{i\_1}....g^{\pm 1}\_{i\_k}.
$$  

This gives you a combinatorial map $e: D^2\to X$ with $\partial e$ given by $w$. I will leave you the part dealing with constructing a homotopy between the loops $g$ and $w$ inside of $X^1$ (this essentially amounts to contracting $T$ to $o$ and then cancelling the backtracking in $g$). 


