virtual bond algorithm