data_structure graph abstract_data_type nonlinear edge_weighted edge_labeled discrete_structure