Calculo de Custo - Aula 1

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ม.ค. 2025

ความคิดเห็น • 36

  • @ItachiUchiha-fd5cs
    @ItachiUchiha-fd5cs 6 ปีที่แล้ว +4

    Prece uma coisa simples, mas a dica do maior menos o menor +1 esta me ajudando muito
    Obrigado professora

  • @jhonataamboni8259
    @jhonataamboni8259 2 ปีที่แล้ว

    Mt bom. Obrigado!

  • @mynameispaulocesar
    @mynameispaulocesar 5 ปีที่แล้ว

    Faz mais vídeos por favor! Sua explicação em 13 minutos fez eu entender mais do que 1 mês com o meu professor, e se duvidar vai acabar o semestre e eu não vou entender nem 1 virgula com a explicação dele.

  • @jeftefariamatamba6030
    @jeftefariamatamba6030 4 ปีที่แล้ว

    @cinthia vendo em 2020. bastante util

  • @robertdccaetano
    @robertdccaetano 5 ปีที่แล้ว +1

    Shoooow de bola! Deus vos abençoe!!!

  • @edilsonfranca3222
    @edilsonfranca3222 5 ปีที่แล้ว

    Muito obrigado Cinthia Caliari !! você merece o meu like e a minha inscrição

  • @teocritoheleno4171
    @teocritoheleno4171 5 ปีที่แล้ว

    Ah se todos fossem iguais a você, que maravilha aprender... Obrigado professora!

  • @mirellas.4243
    @mirellas.4243 5 ปีที่แล้ว

    Excelente explicação!!!!!

  • @andrealuiza9674
    @andrealuiza9674 6 ปีที่แล้ว

    Parabéns pela didática de ensino. Excelente aula! Obrigada!

  • @weronicas.santos6700
    @weronicas.santos6700 6 ปีที่แล้ว

    Explicação maravilhosa!!! Obrigada!

  • @nathaliacarnevalli
    @nathaliacarnevalli 3 ปีที่แล้ว

    Oi professora! Gostei muito da aula :). Tenho uma dúvida, no exemplo 2 no primeiro for ficou 2(n+1) mas não deveria ser 2n... não entendi. Grata pela atenção.

    • @CinthiaCaliari
      @CinthiaCaliari  3 ปีที่แล้ว +1

      Bom dia. De zero até n, fazendo o maior menos o menor mais um,.termos n-0+1 = n+1

  • @italo1398
    @italo1398 7 ปีที่แล้ว +1

    Maravilha de explicação !

  • @MarcosOliveira1
    @MarcosOliveira1 7 ปีที่แล้ว

    Fé no pai que aquela aprovação sai!!!

  • @mirellas.4243
    @mirellas.4243 5 ปีที่แล้ว

    E quando o método é recursivo, como faço?
    No If a condição de parada é se a posição for par correto, Custo = 1? Por fazer uma comparação uma vez. No Else não sei como medir o custo. Me ajuda por favor.
    int q1(inf[ ] vet, obg pos){
    If(pos== vet.length/2) return vet[ pos];
    Else return (vet[pos] + vet[ver.lenght-1-pos] + q1(vet, pos+1));
    }

  • @edvandesousasilva
    @edvandesousasilva 4 ปีที่แล้ว

    Em qual livro encontro esse assunto?
    Estou procurando uma bibliografia para ter mais referencia.

  • @paulamyrianlimapedroso1272
    @paulamyrianlimapedroso1272 5 ปีที่แล้ว

    Muito obrigada...

  • @Bourne2025
    @Bourne2025 5 ปีที่แล้ว

    Obrigado!!!!!

  • @amandaazevedo5902
    @amandaazevedo5902 5 ปีที่แล้ว

    Obrigadaaa!

  • @abner9829
    @abner9829 5 ปีที่แล้ว

    Duvida Urgente!!!
    Se abaixo de um if tiver um retorno o custo desta operação abaixo será 1 no pior caso,por exemplo:
    for(...) --> custo 2(n+1)
    if(..) --> custo n
    return true; --> custo no pior caso = 1 ou N

    • @CinthiaCaliari
      @CinthiaCaliari  5 ปีที่แล้ว +1

      Se dentro do if tiver um retorno, o fato dele entrar no if na primeira vez será considerado o melhor caso, e aí
      for(...) --> custo 2
      if(..) --> custo 1
      return true; --> custo 1
      O pior caso é ele nunca entrar no if
      for(...) --> custo 2(n+1)
      if(..) --> custo n
      return true; --> 0

  • @zuenirclaudio4941
    @zuenirclaudio4941 7 ปีที่แล้ว

    Excelente Aula, ajudou muito. Abrigado... E quando temos esse caso:
    while(!q.isEmpty()) # n
    {
    int u=q.poll();
    topOrder.add(u);
    for(int node : adj[u])
    {
    if(--indegree[node] == 0)
    q.add(node);
    }
    cnt++; # 1
    }

    • @CinthiaCaliari
      @CinthiaCaliari  7 ปีที่แล้ว +1

      Esse trecho de algoritmo é quadrático, pois temos um comando de repetição dentro de outro (for dentro de while). Mas para fazer o cálculo exato, é necessário saber o número mínimo e máximo de vértices adjacentes de cada nodo.

    • @zuenirclaudio4941
      @zuenirclaudio4941 7 ปีที่แล้ว

      é mais ou menos assim o algoritmo que tenho:
      int V;// No. of vertices
      //An Array of List which contains
      //references to the Adjacency List of
      //each vertex
      List adj[];
      long tempoInicial = System.currentTimeMillis();
      public Graph(int V)// Constructor
      {
      this.V = V;
      adj = new ArrayList[V];
      for(int i = 0; i < V; i++)
      adj[i]=new ArrayList();
      }
      // function to add an edge to graph
      public void addEdge(int u,int v)
      {
      adj[u].add(v);
      }
      // prints a Topological Sort of the complete graph
      public void topologicalSort()
      {
      // Create a array to store indegrees of all
      // vertices. Initialize all indegrees as 0.
      int indegree[] = new int[V];
      // Traverse adjacency lists to fill indegrees of
      // vertices. This step takes O(V+E) time
      for(int i = 0; i < V; i++)
      {
      ArrayList temp = (ArrayList) adj[i];
      for(int node : temp)
      {
      indegree[node]++;
      }
      }
      // Create a queue and enqueue all vertices with
      // indegree 0
      Queue q = new LinkedList();
      for(int i = 0;i < V; i++)
      {
      if(indegree[i]==0)
      q.add(i);
      }
      // Initialize count of visited vertices
      int cnt = 0;
      // Create a vector to store result (A topological
      // ordering of the vertices)
      Vector topOrder=new Vector();
      while(!q.isEmpty())
      {
      // Extract front of queue (or perform dequeue)
      // and add it to topological order
      int u=q.poll();
      topOrder.add(u);
      // Iterate through all its neighbouring nodes
      // of dequeued node u and decrease their in-degree
      // by 1
      for(int node : adj[u])
      {
      // If in-degree becomes zero, add it to queue
      if(--indegree[node] == 0)
      q.add(node);
      }
      cnt++;
      }
      // Check if there was a cycle
      if(cnt != V)
      {
      System.out.println("There exists a cycle in the graph");
      return ;
      }
      // Print topological order
      for(int i : topOrder)
      {
      System.out.println(i+" ");
      }
      System.out.println("tempo de execucao: " + (System.currentTimeMillis()/1000));
      }

    • @CinthiaCaliari
      @CinthiaCaliari  7 ปีที่แล้ว

      Desculpe não ter respondido antes. Mas essa semana está sendo punk pra mim. Bom, vamos lá. Tenho um for dentro de um while (custo quadrático). Para saber o custo exato, tem-se que analisar a quantidade de possíveis nodos adjacentes, pois o custo está diretamente ligado a isso ( for(int node : adj[u])). Poderia tomar como n (tamanho de q) e n (tamanho de m), a princípio meu custo seria da ordem O (m.n), mas também seria necessário saber o custo, ou pelo menos a ordem dos métodos usados nesse trecho (poll(), add(obj))

  • @Luc4sm13
    @Luc4sm13 7 ปีที่แล้ว

    Muito obrigado!

  • @charlesagra9446
    @charlesagra9446 7 ปีที่แล้ว

    O custo do for do exemplo 2 não é 2n?

    • @CinthiaCaliari
      @CinthiaCaliari  7 ปีที่แล้ว +1

      O for começa a ser contado quando i=0 e termina quando a comparação for falsa. A comparação será falsa quando i=mat.length, ou seja, quando i=n. Assim, teremos seu custo 2(n+1).
      Observe que o custo do for é um a mais que o custo dos comandos que estão dentro dele.

    • @charlesagra9446
      @charlesagra9446 7 ปีที่แล้ว +1

      Hum entendi muito obrigado.

  • @JuniorAlves-hd5td
    @JuniorAlves-hd5td 7 ปีที่แล้ว +1

    Cadê a aula 2 ??

    • @JuniorAlves-hd5td
      @JuniorAlves-hd5td 7 ปีที่แล้ว

      O link não leva a nenhum video

    • @CinthiaCaliari
      @CinthiaCaliari  7 ปีที่แล้ว

      th-cam.com/video/4pE4myLN7PE/w-d-xo.html

    • @JuniorAlves-hd5td
      @JuniorAlves-hd5td 7 ปีที่แล้ว

      Obrigado mas ainda tenho duvidas com while e da mesma forma que o for ?

    • @CinthiaCaliari
      @CinthiaCaliari  7 ปีที่แล้ว +3

      Em um algoritmo qualquer você deve contar as atribuições e as comparações. Assim, o princípio é o mesmo, independente do comando.
      O for tem os dois (atribuição e comparação) no mesmo comando, por isso seu custo será dobrado. O while só possui a comparação, pois se houver atribuição, ela estará no seu corpo e será contado na linha em que aparecer.
      Espero que tenha esclarecido

  • @lairochampoudry9071
    @lairochampoudry9071 7 ปีที่แล้ว

    Fiquei em dúvida agora, pois vi um outro vídeo que deu outro valor no mesmo código: th-cam.com/video/4pE4myLN7PE/w-d-xo.html

    • @CinthiaCaliari
      @CinthiaCaliari  7 ปีที่แล้ว +4

      Caro Lairo, observe que os algoritmos são ligeiramente diferentes, embora façam a mesma coisa, ou seja, procurar o maior elemento de um vetor. Este algoritmo é um pouco mais eficiente que aquele.
      Então vamos lá:
      No algoritmo desse vídeo, temos que o segundo for é : for (j=1; j