Первое, что приходит на ум, это то, что вы говорите об операциях над множествами, для которых итераторы, возможно, не лучшее решение.
Я не знаю, существует ли какое-либо существующее решение для вашей проблемы, но в качестве общего решения я бы использовал хеш-таблицы. Например, создайте хеш-таблицу, используя токены первого набора (с этого момента я буду называть ее набором, так как я считаю, что Iterator - не лучшее слово), и вы можете сделать это в Theta (N), а затем попытаться вставьте другой набор в ту же хеш-таблицу. Когда вы столкнетесь в первый раз, вы поймете, что есть совпадение. Конечно, это хорошо работает, если хеш-пространство велико, а хеш-функция гарантирует незначительное количество коллизий, однако всегда можно закодировать какой-то обходной путь.
Учитывая, что в PHP есть ассоциативные массивы (которые являются формой хеш-таблиц), вы также можете создать массив с токенами в качестве ключей, что снова можно сделать в Theta (N), а затем использовать array_key_exists. Вполне возможно, что array_key_exists - это не что иное, как линейное сканирование списка ключей, так как я не знаком с внутренностями PHP, но я совершенно уверен, что если ассоциативные массивы реализованы в виде хеш-таблиц, они должны быть реализованы гораздо чаще. эффективнее, чем линейное сканирование.