Competitive k-server algorithms