  By implementing algorithmic versions of Sapozhenko's graph container methods,
we give new algorithms for approximating the number of independent sets in
bipartite graphs. Our first algorithm applies to $d$-regular, bipartite graphs
satisfying a weak expansion condition: when $d$ is constant, and the graph is a
bipartite $\Omega( \log^2 d/d)$-expander, we obtain an FPTAS for the number of
independent sets. Previously such a result for $d>5$ was known only for graphs
satisfying the much stronger expansion conditions of random bipartite graphs.
The algorithm also applies to weighted independent sets: for a $d$-regular,
bipartite $\alpha$-expander, with $\alpha>0$ fixed, we give an FPTAS for the
hard-core model partition function at fugacity $\lambda=\Omega(\log d /
d^{1/4})$. Finally we present an algorithm that applies to all $d$-regular,
bipartite graphs, runs in time $\exp\left( O\left( n \cdot \frac{ \log^3 d }{d
} \right) \right)$, and outputs a $(1 + o(1))$-approximation to the number of
independent sets.
