Let $G(V,E)$ be a unweighted, k-regular hypergraph, with vertices $V=(v_1, ... v_n)$ and edges $E=(e_1, ... e_m)$. The k-regularity leads to $|e_i|=k$ (i.e. every edge contains exactly $k$ vertices). A perfect matching (PM) is a subset of $E$, such that every vertex $v_i$ is contained exactly one time.

A 2-regular hypergraph is a usual graph. To get the number of PMs, one calculates the Hafnian of the corresponding $n \times n$ adjacency matrix A. Calculating the Hafnian is in the complexity class $\#P$. For bipartite 2-regular graphs, one can calculate the permanent of the adjacency matrix via the Ryser formular. $perm(A)$ can be evaluated in $O(2^{n-1}n^2)$ steps.

For $k>2$, the hypergraphs can be written as incidence matrix or high-dimensional $n \times n \times ... \times n$ adjacency matrix A.

My three questions:

With which algorithm can the number of perfect matchings be calculated for unweighted k-regular graphs, and what is its runtime?

With which algorithm can the number of perfect matchings be calculated for a unweighted hypergraph with $|e_i|\leq k$, and what is its runtime?

With which algorithm can the number of perfect matchings be calculated for k-regular graphs with complex weights, and what is its runtime?

Any answer or link to literature would be highly appreciated.