input: def create_BPMN_diagram(process: str, clusters: dict, edges: dict, output_png: str, output_dot: str):
      """
      Create a BPMN diagram using the bpmn_pgv library. The diagram should include specific clusters, tasks, and connections as described.
      The diagram should also include nodes for SIGEFOMDES Administración and SISAC, and connect them to the appropriate clusters using dashed edges.
      Finally, save the diagram as a PNG file and a DOT file with the given names.
      
      >>> create_BPMN_diagram("FOMDES process 1", 
      ... {"Secretaría Ejecutiva": {"se7": ("Recibir el documento protocolizado", "start"), "se8": ("Revisar el documento protocolizado", "human"), "se9": ("", "end")},
      ... "Presidencia": {"p1": ("Firma del cheque", "human"), "p2": ("Entregar cheque a beneficiario", "message")},
      ... "Presupuesto/Administración": {"pr2": ("Verificar documentación legal y elaborar certificación de disponibilidad", "human"), "pr3": ("Crear las cuentas por cobrar", "human"), "pr4": ("Generar tablas de amortización", "human"), "pr5": ("Imprimir y firmar orden de liquidación y cheque", "human")}},
      ... {"se7": {"se8": {}}, "se8": {"se9": {"style": "invis"}}, "p1": {"p2": {}}, "pr2": {"pr3": {}}, "pr3": {"pr4": {}}, "pr4": {"pr5": {}}},
      ... "proc4.png", "proc4.dot")
      'proc4.png'
      """
      from bpmn_pgv import *
      import pygraphviz as pgv
  
      F = pgv.AGraph(strict=False, directed=True)
  
      F.graph_attr.update(label="", rankdir="TB", splines="ortho", labelloc="b", size="8, 7.5", forcelabels="true", ranksep="0.25", fontname="Liberation Sans Narrow Condensed")
      F.node_attr.update(fontname="Liberation Sans Narrow Condensed")
      F.edge_attr.update(fontname="Liberation Sans Narrow Condensed", fontsize="10")
  
      for cluster_name, tasks in clusters.items():
          cluster = add_cluster(F, cluster_name, cluster_name, tasks, edges)
  
      F.add_node("SIGEFOMDES Administración", image=IMAGE_PATH + "database.png", shape="plaintext", label="", xlabel="SIGEFOMDES Administración")
      F.add_node("SISAC", image=IMAGE_PATH + "database.png", shape="plaintext", label="", xlabel="SISAC")
  
      global_edges = {"Beneficiario":  {"se7": {"style": "dashed"}},
                      "se8": {"pr2": {"style": "dashed"}},
                      "pr3": {"SIGEFOMDES Administración": {"style": "dashed"}},
                      "pr4": {"SISAC": {"style": "dashed"}},
                      "pr5": {"p1": {"style": "dashed"}},
                      "p2": {"se9": {"style": "dashed"}, "Beneficiario": {"style": "dashed"}}}
  
      add_edges(F, global_edges)
  
      F.draw(output_png, prog='dot')
      F.write(output_dot)
  
      return output_png
output:     for task_id, task_info in clusters["Secretaría Ejecutiva"].items():
          if task_info[1] == "start":
              F.add_edge("SIGEFOMDES Administración", task_id, style="dashed")
          elif task_info[1] == "end":
              F.add_edge(task_id, "SISAC", style="dashed")
  
      for task_id, task_info in clusters["Presupuesto/Administración"].items():
          if task_info[1] == "human":
              F.add_edge("SIGEFOMDES Administración", task_id, style="dashed")
          elif task_info[1] == "human":
              F.add_edge(task_id, "SISAC", style="dashed")
  
      for task_id, task_info in clusters["Presidencia"].items():
          if task_info[1] == "human":
              F.add_edge("SIGEFOMDES Administración", task_id, style="dashed")
          elif task_info[1] == "message":
              F.add_edge(task_id, "SISAC", style="dashed")