relational algorithms