function M3 = union_nfsa(M1,M2) % M3 is the nfsa-union of M1 and M2 % see str2nfsa.m for basic nfsa definitions nQ1 = length(M1.Q); nQ2 = length(M2.Q); nQ3 = nQ1 + nQ2 + 1; q_link = nQ1 + 1; M3 = M1; M3.Q = 1:nQ3; M3.q0 = q_link; M3.F = union(M1.F,M2.F+q_link); M3 = set_ndelta(M3,[q_link],['@'],{[M1.q0 M2.q0+q_link]}); for q = M2.Q for s = M2.ALF R = nfsa_delta(M2,q,s); M3 = set_ndelta(M3,[q+q_link],[s],{R+q_link}); end end return