#discrete-mathematics
#дискретная математика
Вопрос:
Как я могу написать алгоритм, который определяет, является ли функция f из конечного множества A в конечное множество B функцией onto.
Это то, что у меня есть на данный момент:
A: array ( members of set A )
B: array ( members of set B )
Mapped: associative array of Boolean variables.
for each b in B:
Mapped[b] = false
for each a in A:
Mapped[f(a)] = true
Onto = true;
for each b in B:
Onto = Onto AND Mapped[b]
return Onto
Это правильно?
Комментарии:
1. На мой взгляд, выглядит неплохо. Вы получаете A.
2. Ha ha! Спасибо, профессор!
Ответ №1:
Да, это сработает. Потенциально более простым подходом было бы
for each a in A:
remove f(a) from B
return (is B empty?)
И тогда, конечно, сначала вам следует отсортировать B
, чтобы быстрее удалять.