gn算法java